【发布时间】:2014-03-10 09:17:50
【问题描述】:
我在 MS Visual Studio 中开发了一个 JNI 应用程序,它从 C++ 文件中调用 Java 方法。所有必需的文件,例如 jvm.lib 和 jvm.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 我不确定,如何验证它是否是静态链接的?我已将 LIB、INCLUDE 和 PATH 变量设置为指向所需的 .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