在Windows中使用JNI加载库时出错

时间:2012-06-21 13:50:12

标签: java java-native-interface

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

有人可以帮我吗?

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

由于 Niraj Rathi

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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多个文件,但它已编译完成。没有JNI,C ++代码工作正常,甚至编译了Java类。只有在Java尝试加载DLL时才会出现问题。