从c ++调用java方法的麻烦

时间:2013-08-19 08:08:31

标签: java c++ java-native-interface

我试图从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版本?

感谢您阅读:)

1 个答案:

答案 0 :(得分:0)

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

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