关于C++调用java的JNI问题
肯定结帖!!!
#include <jni.h>
int main(int argc, char* argv[])
{
int res;
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[3];
vm_args.version=JNI_VERSION_1_4;
//这个字段必须设置为该值
/*设置初始化参数*/
options[0].optionString = "-Djava.compiler=NONE ";
options[1].optionString = "-Djava.class.path=. ";
options[2].optionString = "-verbose:jni ";
//用于跟踪运行时的信息
/*版本号设置不能漏*/
vm_args.version = JNI_VERSION_1_4;
vm_args.nOptions = 3;
vm_args.options = options;
vm_args.ignoreUnrecognized = JNI_TRUE;
res =JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
if (res < 0)
{
fprintf(stderr, "Can 't create Java VM\n ");
exit(1);
}
jvm-> DestroyJavaVM();
fprintf(stdout, "Java VM destory.\n ");
}
这是一段c++初始化jvm的代码,我用的是vc+6.0在project--setting--link里开始没设置jvm.lib时候报错找不到很多函数,后来我加进去了。程序编译没有错,可是运行的时候照不到jvm.dll,把它拷到项目下能编译过,运行也不报错,可是JNI_CreateJavaVM不成功,返回的总是负数,把jvm.dll拷贝过来不是办法,应该有标准的方法。哪位高人把以上问题指点一下?不胜感激!
------解决方案--------------------C++调用java,跟,java调用c++有什么区别?
------解决方案--------------------建议不要Create,用JNI_GetCreatedJavaVMs