jvm.dll似乎与Visual Studio 2013不兼容

jvm.dll seems incompatible with Visual Studio 2013

本文关键字:Studio 2013 不兼容 Visual dll jvm      更新时间:2023-10-16

我正在使用LoadLibrary()将(服务器)jvm.dll动态加载到我的64位Visual Studio 2013 C++应用程序中,以便使用JNI执行本机Java代码。

在VS调试器中,在加载dll时,我遇到了一些访问冲突(但如果我在这些冲突之后"继续",情况似乎会正常);然后在调用一些JNI调用时发生硬崩溃。我尝试过Java 1.7和Java 1.8中的jvm.dll,但也遇到了同样的问题。

我怀疑问题是运行库不兼容。依赖性walker表示,即使是最新的jvm.dll也依赖于msvcr100.dll(来自Visual Studio 2010)。我听到过关于使用不兼容的运行时版本的后果的可怕警告;并在其他情况下亲眼看到了结果。

有其他人遇到这个问题吗?是否有针对Visual Studio 2013编译的jvm.dll版本?

谢谢,Dan

就在最近(2015年2月),我编译了一个JNI应用程序,它调用JVM来运行Java程序。我使用了最新的JRE版本(1.8.0_31)和Visual Studio 2013。我还在运行时加载jvm.dll。如果你想看看我是如何设置JNI调用的,请看一下这篇文章。

所以有可能。。。请确保包含jvm.dll的JRE是为与Visual Studio项目相同的体系结构(32位或64位)构建的。如果您使用的是64位,您可能需要添加x64作为您的配置。要执行此操作,请转到:

Solution --> Properties --> Configuration Properties

还要确保您的包含/库是正确的。对于我的项目,我需要包括以下内容:

C:Program FilesJavajdk1.8.0_31include
C:Program FilesJavajdk1.8.0_25includewin32

此外,我需要包括jvm.lib,它位于:

C:Program FilesJavajdk1.8.0_31lib

确保还将jvm.lib添加到链接器输入中。或者,您可以使用预处理器:

#pragma comment(lib, "jvm.lib")

希望这将有助于正确配置您的项目。如果您仍然有错误,我建议您完全卸载Java,然后重新安装。也许Visual Studio 2013也是如此。。。