3

我正在尝试使用从此处获取的代码从 C 运行 java 代码。尝试运行JVM的代码如下:

JNIEnv *env;
    JavaVMInitArgs vm_args;
    JavaVMOption options;
    options.optionString = "-Djava.class.path=D:\\Java Src\\TestStruct";
    vm_args.version = JNI_VERSION_1_6;
    vm_args.nOptions = 1;
    vm_args.options = &options;
    vm_args.ignoreUnrecognized = 0;

    int ret = JNI_CreateJavaVM(jvm, (void**)&env, &vm_args);

代码编译得很好,但是当我尝试执行它时,我收到以下错误:

VM初始化时出错无法加载本机库:找不到依赖库

看着这个问题,我使用了dependency walker 来找出我缺少哪些二进制文件。事实证明我失踪了ieshims.dllwer.dll我的电脑根据这个提到的 dll 用于 vista 及更高版本(我在 XP 上)。
于是我想到了几个问题:

  • 我该如何摆脱这个?
  • 为什么我首先会收到此错误?我不能在 XP 中加载 JVM 吗?

我在 Windows XP 上,使用 Visual Studio 2008,安装了 JDK 1.7(也尝试使用 1.6)。

4

2 回答 2

5

在您链接的文章下方的讨论线程中有一个类似的问题。

在那里,一位用户发现解决方案是确保您在PATH环境变量中拥有 Java 二进制文件的路径。例如:

PATH = "C:\Program Files\Java\jdk1.6.0_18\jre\bin\client";...
于 2013-04-08T11:15:06.700 回答
3

还有另一种方法 - 您可以从自定义位置动态加载 jvm.dll 并设置指向本机库的 java.library.path 变量。这样它就不必依赖于系统环境路径。

这是其他线程中的示例:

在 C++ 中使用 JNI 创建 JVM 不返回

于 2013-09-26T13:38:39.060 回答