我创建了一个预构建的本机库libNative.so,该库具有要从Android应用程序调用的JNI函数。
libNative.so位于设备中的/ system / x86_64。
现在,我想从Android应用程序调用在我的预建本机库中实现的JNI函数。我在下面的程序。
1>在MainActivity中加载本机库:
static { System.loadLibrary("Native"); }
2>声明本机方法为:
public native int Init();
3>共享库中的函数定义为:
JNIEXPORT jint Java_App_PACKAGE_NAME_MainActivity_Init(JNIEnv* env, jobject callingObject){
return 0;
}
4>我在onCreate中调用本机函数:
int i = Init();
现在,如果我构建并运行该应用程序。我得到的错误是:
AndroidRuntime: java.lang.UnsatisfiedLinkError: No implementation found for int App_PACKAGE_NAME_MainActivity.Init() (tried Java_App_PACKAGE_NAME_MainActivity_Init and Java_App_PACKAGE_NAME_MainActivity_Init__)
请帮助我解决以上错误。
为什么即使加载库成功也出现链接器错误。
提前致谢 !
答案 0 :(得分:1)
我发现我正在做的错误。本机库中JNI函数的定义是错误的。我进行了如下更改,一切开始正常! extern“ C” JNIEXPORT jint JNICALL Java_App_PACKAGE_NAME_MainActivity_Init(JNIEnv * env,jobject callObject){ }