1

我们在软件代码中结合了 Java 和 C++。因此,我们使用 JNI 从 JAVA 调用 C++ 库 baiscally .dll 和 .so。在 solaris 上这工作正常。我们能够加载 .so 并从 Java 方法调用 C++ 函数,但在 Windows 上,我们得到 r6034 windows 错误,即不支持的加载库的方式。

任何人都可以在这里帮助我吗?

我已经创建了 java.exe.manifest 并将其添加到 %JAVA_HOME%/bin。

谢谢尼拉吉·拉蒂

4

2 回答 2

2

您的 dll 需要清单,而不是 java.exe

于 2012-06-21T14:23:29.047 回答
0

这是 java.exe.manifest 文件

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.4053' processorArchitecture='amd64' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

其他代码大约有 50 多个文件,但已编译。C++ 代码在没有 JNI 的情况下运行良好,甚至 Java 类也被编译。仅当 Java 尝试加载 dll 时才会出现问题。

于 2012-06-22T06:13:16.710 回答