【发布时间】:2014-12-10 11:53:37
【问题描述】:
我有一个问题:我正在使用 JNI 处理自生成的 DLL。 我已经使用 Visual Studio 2013 为 64 位机器生成了 DLL。如果我的 DLL 真的是 64 位,我已经检查过 Dependency Walker,而且确实如此。然后我尝试在我的 Java 源代码中使用 DLL(Eclipse 版本:Luna Service Release 1 (4.4.1) Java 版本 1.7.0_71-b14 64 位版本)。
当我运行我的 Java 程序时,我收到错误消息 Can't load IA 32-bit .dll on a AMD 64-bit platform in this line。
static
{
System.loadLibrary("iomemjava");
}
我已经在这个问题上花了 2 天时间,并搜索了 stackoverflow 和其他一些论坛。我真的没有想法可能是错的。
到目前为止,希望你们能提供帮助 马丁
【问题讨论】:
-
您说 DLL 是 64 位的,但显然您的计算机不同意。您的计算机可能是正确的。你确定它选择了正确的 DLL 版本吗?
-
是的,DLL 应该是 64 位的,Dependency Walker 和 Visual Studio 告诉我,DLL 中的所有内容也是 64 位 (DW)。而且我还生成了一个 32 位 DLL 用于测试。所以一切看起来像 DLL 是 64 位的。也许 Dependency Walker 或 Visual Studio 会犯错误。但他们不应该我已经检查了两次
-
显然 Java 正在选择您的 32 位测试 DLL 而不是 64 位版本。请参阅下面我的回答,了解如何告诉 Java 在哪里寻找 DLL。
-
提示:由于您使用 Dependency Walker,您还可以使用其 Profile 功能。它将显示在运行时加载的 DLL 的路径。
标签: java c++ dll java-native-interface 64-bit