我试图从c ++代码调用java东西.. 我将JDK SE 7u25的include和lib路径链接到我的visual studio 6.0(我只是在旧版本的MSVC中尝试它)。
JNIEnv* create_vm(JavaVM ** jvm) {
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options;
options.optionString = "-Djava.class.path=C:\\Users\\myName\\Desktop\\Java Src\\TestStruct"; //Path to the java source code
vm_args.version = JNI_VERSION_1_6; //JDK version. This indicates version 1.6
vm_args.nOptions = 1;
vm_args.options = &options;
vm_args.ignoreUnrecognized = 0;
int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);
if(ret < 0)
printf("\nUnable to Launch JVM\n");
return env; }
我收到以下错误...
C:\ PROGRAM FILES \ JAVA \ JDK1.7.0_25 \ LIB \ jvm.lib:致命错误LNK1113:机器类型无效
有什么问题? 我猜JNI_VERSION_1_6可能有问题..?因为我使用版本SE 1.7.0_25。但是我无法在jni.h文件中找到JNI_VERSION_1_7 ..
也许我必须卸载当前的jdk并安装jdk SE 1.6版本?
感谢您阅读:)
答案 0 :(得分:0)
也许您正在尝试从32位程序链接x64版本的lib文件。如果要编译32位exe,请确保使用32位JDK。
或者,您可以使用'LoadLibrary'+'GetProcAddress'动态使用'jvm.dll'来调用相应的JNI函数。同样,你需要注意32/64版本。