从c++调用java方法时出现问题

trouble in calling java method from c++

本文关键字:问题 方法 c++ 调用 java      更新时间:2023-10-16

我正在尝试从c++代码中调用java填充。。我将JDKSE7u25的include-and-lib路径链接到我的visualstudio6.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 JVMn");     
return env; }

我得到以下错误。。。

C: \PROGRAM FILES\JAVA\JDK1.70_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版本?

感谢您阅读:)

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

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