JNI_CreateJavaVM () завершается с кодом выхода 1
Я пытаюсь вызвать метод Java из C ++, используя JNI. Для этого я установилjdk1.7.0_51
, связывая противjdk1.7.0_51\lib\jvm.lib
, в том числеjdk1.7.0_51\include
а такжеjdk1.7.0_51\include\win32
, используя следующий код в Visual Studio 2012, я попытался создать объект Java vm - но функция всегда завершает мое приложение с кодом выхода 1 (функция не возвращает 1: моя программа завершается полностью и отправляет код выхода 1).
#include <iostream>
#include "jni.h"
int main(int argc, char*argv[]){
JNIEnv* env = nullptr;
JavaVM* jvm = nullptr;
JavaVMInitArgs vm_args;
JavaVMOption options[2];
options[0].optionString = "-Djava.class.path=.";
options[1].optionString = "-DXcheck:jni:pedantic";
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 2;
vm_args.options = options;
vm_args.ignoreUnrecognized = JNI_TRUE; // remove unrecognized options
int ret = JNI_CreateJavaVM(&jvm, (void**) &env, &vm_args);
std::cout << "This code is never reached" << std::endl;
return 0;
}
ОПЕРАЦИОННЫЕ СИСТЕМЫ: Windows 7 (x64)
Составитель: Visual Studio 2012 (проект x86 / Win32)
Java VM: jdk1.7.0_51, i586 (на мой взгляд, все должно быть в порядке, потому что я компилирую для x86 - иначе связь с jvm.lib не будет работать)
Я уже пытался использовать оба:jdk1.7.0_51\jre\bin\client\jvm.dll
также как иjdk1.7.0_51\jre\bin\Server\jvm.dll
- с тем же результатом (хотя я не совсем уверен, в чем разница).
Любые идеи и предложения будут высоко оценены.