【问题标题】:Generating 32 Bit dll JNI生成 32 位 dll JNI
【发布时间】:2014-12-30 11:49:08
【问题描述】:

您好,我正在尝试在项目中使用由 JNI 生成的 dll。

我生成了一个 64 位 dll,但我的项目说 %1 不是有效的 win32 应用程序

所以我决定生成一个新的 DLL,但这次是 32 位的。我更改了我的 Visual Studio 中的设置,就像我在其他帖子中发现的一样,配置为 Win32,目标机器为 MachineX86。

这一切都很好,但是当我尝试使用这个 DLL 启动项目时,我得到了同样的错误。我用 Dependency Walker 检查了 DLL,发现 DLL 是 32 位的,但包含的 DLL 是 64 位的。

所以你们是我最后的希望。你有什么想法 ?

注意:我无法更改为 Linux atm。

Visual Studio 2012 java版本“1.7.0_71” Java(TM) SE 运行时环境(build 1.7.0_71-b14)

【问题讨论】:

    标签: java visual-studio-2012 dll java-native-interface


    【解决方案1】:

    刚刚阅读,但我已经发现了我的错误,问题是当你切换工作区时,eclipse 改变了它安装的 JRE。

    所以在我开发 64 位库的测试程序中工作。但不是在实际项目中,安装的 JRE 是不同的。

    所以如果有人遇到同样的问题,别忘了检查一下

    【讨论】:

      【解决方案2】:

      请检查您的系统路径。 Windows 将尝试加载它找到的与 DLL 名称匹配的第一个 DLL。 Windows 不会检查 DLL 是 32 位还是 64 位,它会尝试加载它。

      如果您构建了 32 位 DLL,那么您有责任确保任何依赖的 DLL 也是 32 位的,并且 Windows 会首先找到这些 32 位 DLL

      【讨论】:

      • 只是阅读它,但我已经发现了我的错误,问题是当你切换工作区时,eclipse 改变了它安装的 JRE。所以在我开发 64 位库的测试程序中工作。但不是在实际项目中,安装的 JRE 是不同的。所以如果有人有同样的问题不要忘记检查这个
      猜你喜欢
      • 1970-01-01
      • 2021-02-18
      • 1970-01-01
      • 2017-09-12
      • 2022-01-20
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      相关资源
      最近更新 更多