Я пытаюсь вызвать метод 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).JNI_CreateJavaVM() завершается с кодом завершения 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;
}
OS: Windows 7 (x64)
Компилятор: Visual Studio 2012 (x86/Win32 Project)
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
- с тем же результатом (я не совсем уверен, какая разница, хотя).
Любые идеи & Предложения были бы высоко оценены.
Помог ли мой ответ? – manuell