利用Android NDK编译动态库,在C文件中调用了两个JNI函数:JNI_GetDefaultJavaVMInitArgs和JNI_CreateJavaVM。编译的时候始终报以下错误:
XXX: undefined reference to `JNI_GetDefaultJavaVMInitArgs'
XXX: undefined reference to `JNI_CreateJavaVM'
看了网上很多人的解答,基本都是添加libjvm.so或者libnativehelper库。尝试下,没有一个靠普的。不是说人家的方法不靠普,而是这种方法不适合用于Android。原因是NDK根本没有将这两个接口导出来,这个在jni.h中有说明,位于1110行,内容如下:
/*
* VM initialization functions.
*
* Note these are the only symbols exported for JNI by the VM.
*/
#if 0 /* In practice, these are not exported by the NDK so don't declare them */
jint JNI_GetDefaultJavaVMInitArgs(void*);
jint JNI_CreateJavaVM(JavaVM**, JNIEnv**, void*);
jint JNI_GetCreatedJavaVMs(JavaVM**, jsize, jsize*);
#endif
看,这里显然将两个函数给屏蔽掉了,所以不能直接用。
看来常规的JNI有些时候对Android不适用。虽然Andr