无法加载JVM
我想从C运行的代码使用从here取得的代码。试图运行的JVM的代码如下:无法加载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);
代码编译罚款然而,当我尝试执行它,我收到以下错误:
Error occurred during initialization of VM Unable to load native library: Can't find dependent libraries
看着我使用依赖this问题步行者找出我失踪的二进制文件。事实证明,我错过了我的电脑ieshims.dll
和wer.dll
,根据this提到的dll在Vista和以上版本中使用(我在XP上)。
那么几个问题,我想起:
- 我如何摆脱呢?
- 为什么我首先得到这个错误?我无法在XP中加载JVM吗?
我在Windows XP上,使用Visual Studio 2008,安装了JDK 1.7(也试过1.6)。
还有另外一种方式 - 你可以从一个自定义位置动态加载的jvm.dll并设置的java.library.path变量指向本机库。这样就不必依赖于系统环境PATH。
这里的例子在其他线程:
是的,但这意味着我将不得不手动加载我正在使用的每个函数。可能的,但令人沮丧的不是吗? – atoMerz 2013-09-27 07:21:26
请记住,你仍然需要一个JRE - 说了那么一句,你只加载jvm.dll并指向JRE(libs)的自定义位置。好处是您指定了特定的JRE位置,而不是依赖位于PATH上的JRE位置。您不需要加载任何特定的JRE .dll文件。 – 2013-10-08 12:53:45
这些可能是误导无关的错误:http://stackoverflow.com/questions/2465111/dependency-walker-reports-ieshims-dll-and-wer -dll-missing – Thomas 2013-04-08 10:37:03
@Thomas,确实是。 – atoMerz 2013-04-10 11:50:26