loadNativeCode未注册

时间:2012-04-22 21:06:24

标签: android android-ndk

我尝试运行一个Android应用程序,它在本机中实现了部分代码。 它确实找到了共享库,但当它试图在模拟器中运行它并调用loadNativeCode时,我得到:

AndroidRuntime(1342): java.lang.UnsatisfiedLinkError: loadNativeCode

就我追踪的代码而言,似乎错过了对register_android_app_NativeActivity的调用,该调用会设置loadNativeCode映射。但由于这是在运行时完成的,我不知道为什么它不起作用。

1 个答案:

答案 0 :(得分:0)

JNI
loadNativeCode native function MUST format as:

Static way:
JNIEXPORT void JNICALL Java_com_tapir_android_jniutils_test_MainActivity_emptyf(JNIEnv *env, jobject obj)
{
...
}
package name is com.tapir.android.jniutils.test
class name is MainActivity
function name is emptyf

Dynamic way,use RegisterNatives to register your native function in JNI_onLoad function

JNINativeMethod nm;
nm.name = "emptyf";
/* method descriptor assigned to signature field */
nm.signature = "()V";
nm.fnPtr = native_emptyf;
env->RegisterNatives( cls, &nm, 1);

native_emptyf MUST like as 
void native_emptyf(JNIEnv *env, jobject obj)
{
...
}

hope can help u