Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ JNI通过选择要加载的JVM.dll来创建JVM_Visual C++ - Fatal编程技术网

Visual c++ JNI通过选择要加载的JVM.dll来创建JVM

Visual c++ JNI通过选择要加载的JVM.dll来创建JVM,visual-c++,Visual C++,我的电脑上安装了几个Java。是否可以通过某种方式传递从哪个路径加载jvm.dll的设置?以下代码使用JNI创建JVM: void createJVM() { JavaVMInitArgs vm_args; JavaVMOption options[4]; int n = 0; char * str; str= new char[1000]; sprintf(str, "-Djava.class.path=%S\\tst.jar", myPath); options[n++].

我的电脑上安装了几个Java。是否可以通过某种方式传递从哪个路径加载jvm.dll的设置?以下代码使用JNI创建JVM:

void createJVM()
{

JavaVMInitArgs vm_args; 
JavaVMOption options[4]; 

int n = 0;     
char * str;
str= new char[1000];
sprintf(str, "-Djava.class.path=%S\\tst.jar", myPath);
options[n++].optionString = str; 

str= new char[1000];
sprintf(str, "-Djava.library.path=%S\\lib;%S", myPath, myPath);
options[n++].optionString = str;

str= new char[1000];
sprintf(str, "-Duser.dir=%S", myPath);
options[n++].optionString = str;

vm_args.version = JNI_VERSION_1_4;
vm_args.nOptions = n;     
vm_args.options = options;     
vm_args.ignoreUnrecognized = false;


JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); 
}

我知道有两个选项:第一个是在运行可执行文件之前将PATH环境变量设置为要使用的jvm.dll目录,第二个是在运行时动态链接到jvm.dll,例如使用:


我知道有两个选项:第一个是在运行可执行文件之前将PATH环境变量设置为要使用的jvm.dll目录,第二个是在运行时动态链接到jvm.dll,例如使用:

HINSTANCE hinstLib = LoadLibrary(TEXT("D:\\desired_jvm\\jre6\\bin\\client\\jvm.dll"));
typedef jint (JNICALL *PtrCreateJavaVM)(JavaVM **, void **, void *);
PtrCreateJavaVM ptrCreateJavaVM = (PtrCreateJavaVM)GetProcAddress(hinstLib,"JNI_CreateJavaVM");
jint res = ptrCreateJavaVM(&jvm, (void**)&env, &vm_args);
//...