0

我正在尝试从 c++ 代码中调用 java 的东西。我将 JDK SE 7u25 的包含和 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 版本?

感谢您阅读它:)

4

1 回答 1

0

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

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

于 2013-08-19T08:15:07.493 回答