android NDK开发中使用'JNI_CreateJavaVM'的问题

呀呀的呀 2012-09-20 02:30:24
不知使用'JNI_CreateJavaVM'初始化虚拟机的时候需要包含什么so库跟头文件吗,我直接#include <jni.h>不行会报错:
error: 'JNI_CreateJavaVM' was not declared in this scope

网上说jre目录下有libjvm.dll还是libjvm.lib的,但是我的是android下的,有的也是so库,而且libjvm.dll我也找不到。

不知有没有谁使用过jvm的,能否讲下具体需要怎么做,网上的资料都没有说该怎么做,都是说:调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指

参考链接:
http://www.cnblogs.com/RayLee/archive/2010/10/21/1857348.html
...全文
889 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
动态加载 typedef int (*JNI_CreateJavaVM_Type)(JavaVM**, JNIEnv**, void*); JavaVM* vm = NULL; JNIEnv* env = NULL; JavaVMInitArgs initArgs; JavaVMOption options[3]; char* slashClass = NULL; int optionCount, curOpt, i, argIdx; void *handle = dlopen("/system/lib/libdvm.so", RTLD_LAZY); if(!handle){ printf("dlopen failed!!\n"); return 0; } JNI_CreateJavaVM_Type JNI_CreateJavaVM_Func = (JNI_CreateJavaVM_Type)dlsym(handle, "JNI_CreateJavaVM"); if(!JNI_CreateJavaVM_Func){ printf("dlsym failed, no the func ?!!\n"); goto END; } //设置参数省去 。。。。。。 if (JNI_CreateJavaVM_Func(&vm, &env, &initArgs) < 0) { fprintf(stderr, "Dalvik VM init failed (check log file)\n"); goto END; } 、、。。。。。。
kakaBack 2013-03-18
  • 打赏
  • 举报
回复
还有一个比较费事的办法,到你的android source code根目录下使用grep命令搜索JNI_CreateJavaVM这个方法的实现位置,引用对应的library就可以了
qiqi1204 2013-03-15
  • 打赏
  • 举报
回复
引用 4 楼 kakaBack 的回复:
在Android.mk中加上一句:LOCAL_SHARED_LIBRARIES := libdvm 就OK了
蛋疼啊 我加上了这句 也没有用啊
kakaBack 2013-01-22
  • 打赏
  • 举报
回复
在Android.mk中加上一句:LOCAL_SHARED_LIBRARIES := libdvm 就OK了
呀呀的呀 2012-12-12
  • 打赏
  • 举报
回复
没有像NDK开放。。。这么蛋疼 那不知有其他的办法吗
looooooooop 2012-11-11
  • 打赏
  • 举报
回复
该接口没有向 NDK 开放, 别费劲了
呀呀的呀 2012-11-10
  • 打赏
  • 举报
回复
没有人使用过的吗

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧