我们在软件代码中结合了Java和C ++。因此,我们使用JNI从JAVA调用C ++库.dll和.so。 在solaris上这很好用。我们能够从Java方法加载.so并调用C ++函数,但在Windows上我们得到r6034 windows错误,这是不支持加载库的方式。
有人可以帮我吗?
我已经创建了java.exe.manifest并将其添加到%JAVA_HOME%/ bin。
由于 Niraj Rathi
答案 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时才会出现问题。