【问题标题】:Export MS Visual Studio environment with Windows executable file使用 Windows 可执行文件导出 MS Visual Studio 环境
【发布时间】:2014-03-10 09:17:50
【问题描述】:

我在 MS Visual Studio 中开发了一个 JNI 应用程序,它从 C++ 文件中调用 Java 方法。所有必需的文件,例如 jvm.libjvm.dll,都已包含在“调试->环境”中, "Linker->Input->Additional Dependencies"Linker->General->Additional Library Directories 配置属性。该应用程序在 Visual Studio 中运行良好,但直接运行 .exe 文件时,它抱怨缺少 jvm.dll。因此,我已将文件从 C:\Program Files\Java\jdk1.6.0_45\jre\bin\server 复制到可执行文件所在的 VS 项目中,但随后我收到错误 应用程序无法启动正确(0x000007b)。如何在 .exe 文件中引用第三方库?我最好在 VS 构建过程中导出环境路径和依赖项。

问候,
克里斯

Windows 7 64 位
Java JDK 1.6.45 64 位
MS Visual Studio 2012

【问题讨论】:

  • 您确认您的 EXE 是静态链接到 jvm.dll 的吗?
  • @manuell 我不确定,如何验证它是否是静态链接的?我已将 LIBINCLUDEPATH 变量设置为指向所需的 .lib 和 .dll 文件(如 software.intel.com/sites/products/documentation/studio/composer/… 中所述) .现在可执行文件找到了 jvm.dll 而没有在同一目录中,但仍然出现 0x000007b 错误。
  • 如果你不使用 LoadLibrary,那么你静态链接。在这里查看我的答案:stackoverflow.com/a/21439331/1374704
  • 好的,所以静态链接意味着可执行文件从其原始位置加载 .dll?在PATH环境变量中设置dll路径至少解决了缺少dll的问题。但是什么可能导致错误,有什么想法吗?

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


【解决方案1】:

在您的上下文中,应用程序无法正确启动 (0x000007b) 错误通常是由构建 32 位 EXE 并尝试针对 64 位 DLL 运行它引起的。

检查您的所有文件确实都是 64 位的。

【讨论】:

  • 是的,我也怀疑是 32/64 位架构问题,但不幸的是尝试使用 32 位 Java 也失败了。无论如何,谢谢你的帮助。
  • 愚蠢的我,你完全正确。我添加了我的 64 位 Java 版本的 dll 路径,但在开发环境中我指向 $(JAVA_HOME) 这是 32 位环境。最后,它的工作!再次感谢您的支持。 :)
猜你喜欢
  • 2016-04-17
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-29
  • 1970-01-01
  • 2020-09-14
  • 2016-01-18
相关资源
最近更新 更多