我们在软件代码中结合了 Java 和 C++。因此,我们使用 JNI 从 JAVA 调用 C++ 库 baiscally .dll 和 .so。在 solaris 上这工作正常。我们能够加载 .so 并从 Java 方法调用 C++ 函数,但在 Windows 上,我们得到 r6034 windows 错误,即不支持的加载库的方式。
任何人都可以在这里帮助我吗?
我已经创建了 java.exe.manifest 并将其添加到 %JAVA_HOME%/bin。
谢谢尼拉吉·拉蒂
我们在软件代码中结合了 Java 和 C++。因此,我们使用 JNI 从 JAVA 调用 C++ 库 baiscally .dll 和 .so。在 solaris 上这工作正常。我们能够加载 .so 并从 Java 方法调用 C++ 函数,但在 Windows 上,我们得到 r6034 windows 错误,即不支持的加载库的方式。
任何人都可以在这里帮助我吗?
我已经创建了 java.exe.manifest 并将其添加到 %JAVA_HOME%/bin。
谢谢尼拉吉·拉蒂
您的 dll 需要清单,而不是 java.exe
这是 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 时才会出现问题。