日期:2014-05-20  浏览次数:20709 次

关于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