Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
来源:互联网 发布:淘宝介入后还能评价吗 编辑:程序博客网 时间:2024/05/29 23:45
利用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不适用。虽然Android将这条路封了,不过还是开了另外一扇门,给了另外两个函数用于注册自己编写的本地JNI函数,见jni.h的1125行,内容如下:
/* * Prototypes for functions exported by loadable shared libs. These are * called by JNI, not provided by JNI. */JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* reserved);JNIEXPORT void JNI_OnUnload(JavaVM* vm, void* reserved);这个也是我经常用的动态接口注册函数
- Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
- Android之ndk编译出现"undefined reference to method"解决办法
- Android NDK编译错误处理-- error: undefined reference to '__dso_handle'
- android ndk编译报错undefined reference to __gxx_personality_v0
- Android NDK 编译时候出现 undefined reference to `__android_log_print
- NDK编译出现undefined reference to错误
- undefined reference to 'htons' Android NDK错误
- 【Android-NDK】错误 undefined reference to '__atomic_fetch_add_4'
- android studio ndk undefined reference to '
- android ndk error :undefined reference to.
- android ndk编译C++ 的undefined reference to '__cxa_end_cleanup'及 __gxx_personality_v0问题
- android ndk编译C++ 的undefined reference to '__cxa_end_cleanup'及 __gxx_personality_v0问题
- 使用NDK编译的时候出现 undefined reference to
- 使用NDK编译的时候出现 undefined reference to
- 使用NDK编译的时候出现 undefined reference to
- 使用NDK编译的时候出现 undefined reference to
- 使用NDK编译的时候出现 undefined reference to
- 使用NDK编译的时候出现 undefined reference to
- 《设计模式》笔记:Singleton设计难点
- linux下Vi命令大全
- 追MM与设计模式
- stm32 usbHID调试小结
- Java设计模式
- Android NDK编译之undefined reference to 'JNI_CreateJavaVM'
- oracle之date 查询性能优化
- Lucene的使用
- (C#基础)异常处理二三事
- Double the virtual joystick
- mtl库在GCC编译器下的使用
- NYOJ 士兵杀敌(二) 树状数组
- File类使用
- 两个链表的合并