我尝试运行一个Android应用程序,它在本机中实现了部分代码。
它确实找到了共享库,但当它试图在模拟器中运行它并调用loadNativeCode
时,我得到:
AndroidRuntime(1342): java.lang.UnsatisfiedLinkError: loadNativeCode
就我追踪的代码而言,似乎错过了对register_android_app_NativeActivity
的调用,该调用会设置loadNativeCode
映射。但由于这是在运行时完成的,我不知道为什么它不起作用。
答案 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