从c+;调用java方法时出现问题+; 我试图从C++代码调用java的东西。 我将JDK SE 7u25的include和lib路径链接到我的visual studio 6.0(我只是在旧版本的MSVC中尝试) JNIEnv*创建虚拟机(JavaVM**jvm){ JNIEnv*env; JavaVMInitArgs vm_args; JavaVMOption选项; options.optionString=“-Djava.class.path=C:\\Users\\myName\\Desktop\\Java Src\\TestStruct”;//Java源代码的路径 vm_args.version=JNI_version_1_6;//JDK version。这表示版本1.6 vm_args.nOptions=1; vm_args.options=&options; vm_args.ignoreunrecogned=0; int ret=JNI_CreateJavaVM(jvm,(void**)&env和vm_args); 如果(ret

从c+;调用java方法时出现问题+; 我试图从C++代码调用java的东西。 我将JDK SE 7u25的include和lib路径链接到我的visual studio 6.0(我只是在旧版本的MSVC中尝试) JNIEnv*创建虚拟机(JavaVM**jvm){ JNIEnv*env; JavaVMInitArgs vm_args; JavaVMOption选项; options.optionString=“-Djava.class.path=C:\\Users\\myName\\Desktop\\Java Src\\TestStruct”;//Java源代码的路径 vm_args.version=JNI_version_1_6;//JDK version。这表示版本1.6 vm_args.nOptions=1; vm_args.options=&options; vm_args.ignoreunrecogned=0; int ret=JNI_CreateJavaVM(jvm,(void**)&env和vm_args); 如果(ret,java,c++,java-native-interface,Java,C++,Java Native Interface,我得到了以下错误 C:\PROGRAM FILES\JAVA\JDK1.7.0\U 25\LIB\jvm.LIB:致命错误LNK113:无效的机器类型 有什么问题吗?。。 我想JNI_版本1_6可能是个问题。。?因为我使用的是SE 1.7.0_25版本。但我无法在JNI.h文件中找到JNI_版本1_7 也许我必须卸载当前的jdk并安装jdk SE 1.6版本 感谢您阅读:)也许您正在尝试从32位程序链接x64版的lib文件。如果您正在编译32位的exe,请确保您使用的是32位的JDK 或者,您可

我得到了以下错误

C:\PROGRAM FILES\JAVA\JDK1.7.0\U 25\LIB\jvm.LIB:致命错误LNK113:无效的机器类型

有什么问题吗?。。 我想JNI_版本1_6可能是个问题。。?因为我使用的是SE 1.7.0_25版本。但我无法在JNI.h文件中找到JNI_版本1_7

也许我必须卸载当前的jdk并安装jdk SE 1.6版本


感谢您阅读:)

也许您正在尝试从32位程序链接x64版的lib文件。如果您正在编译32位的exe,请确保您使用的是32位的JDK


或者,您可以使用“LoadLibrary”+“GetProcAddress”动态使用“jvm.dll”调用相应的JNI函数。同样,您需要注意32/64版本。

可能是32位与64位的问题。您的Java是32位还是64位?C++应用程序是32位还是64位?
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; }