2017-02-28 14 views
1

私はGitgubでオープンソースプロジェクトを使用しています。
パッケージ名を変更する必要があります。
archArm.c機能コードソースの主な部分は次のとおりです。
アンドロイドで作業するJNI

jstring 
    Java_com_github_hiteshsondhi88_libffmpeg_ArmArchHelper_cpuArchFromJNI(JNIEnv* env, jobject obj) 


とプライマリArchArmHelper.javaです: 今

package com.github.hiteshsondhi88.libffmpeg; 

class ArmArchHelper { 
static { 
    System.loadLibrary("ARM_ARCH"); 
} 

native String cpuArchFromJNI(); 

boolean isARM_v7_CPU(String cpuInfoString) { 
    return cpuInfoString.contains("v7"); 
} 

boolean isNeonSupported(String cpuInfoString) { 
    // check cpu arch for loading correct ffmpeg lib 
    return cpuInfoString.contains("-neon"); 
} 
} 


私はarchArmの一部を編集しました。 c関数は次のようになります。

jstring 
Java_com_emad_amerian_libffmpeg_ArmArchHelper_cpuArchFromJNI(JNIEnv* env, jobject obj) 

そして私はに私のArchArmHelper.java編集:私は私のAPKファイルが正しくなく、実行が私のプロジェクトのリターンエラーを起動したときに構築するために

package com.emad.amerian.libffmpeg; 
class ArmArchHelper { 
static { 
    System.loadLibrary("ARM_ARCH"); 
} 

native String cpuArchFromJNI(); 

boolean isARM_v7_CPU(String cpuInfoString) { 
    return cpuInfoString.contains("v7"); 
} 

boolean isNeonSupported(String cpuInfoString) { 
    // check cpu arch for loading correct ffmpeg lib 
    return cpuInfoString.contains("-neon"); 
} 
} 

ことができます。

02-28 23:29:20.001 15094-15094/com.emad.amerian.sampleffmpeg E/art: No implementation found for java.lang.String com.emad.amerian.libffmpeg.ArmArchHelper.cpuArchFromJNI() (tried Java_com_emad_amerian_libffmpeg_ArmArchHelper_cpuArchFromJNI and Java_com_emad_amerian_libffmpeg_ArmArchHelper_cpuArchFromJNI__) 

答えて

0

JNIEXPORTマクロとJNICALLマクロを使用して関数をエクスポートする必要があります。

JNIEXPORT jstring JNICALL Java_com_emad_amerian_libffmpeg_ArmArchHelper_cpuArchFromJNI(JNIEnv* env, jobject obj) 

これにより、関数がライブラリのシンボルテーブルに表示され、Java VMがそれをリンクすることができます。

+0

ありがとう、私はそれをテストしましたが、同じエラーを返しました –

+0

.soファイルを再構築しましたか?警告やエラーはありましたか? – samgak

+0

私は準備ができているプロジェクトを使用しています。どのように.soファイルを再構築できますか?プロジェクトのリンク:github.com/WritingMinds/ffmpeg-android-java –

関連する問題