0

我使用 VC++ 2008 创建了一个 DLL 文件,设置如下:

  • 配置类型:动态库 (.dll)
  • MFC 的使用:使用标准 Windows 库
  • 使用 ATL:不使用 ATL
  • 公共语言运行时支持:公共语言运行时支持 (/clr)

创建的 DLL 在我的机器(创建它的机器)上运行良好,但不能在另一台机器上使用(我用 3 台机器测试)。有关更多详细信息,我通过 JNI(Java 本机接口)加载此 DLL 文件。在我的机器上它可以工作,但在其他机器上却显示错误“java.lang.UnsatisfiedLinkError:: The application failed to start because its side-by-side configuration is wrong....”

我的问题是: 1. 在创建不能在多个环境下工作的 DLL 时,我是否遗漏了任何配置?2. 我们可以创建一个可以在不同机器上工作的 DLL 文件吗?

太感谢了!

4

3 回答 3

2

您需要确保 VC++ 2008 Redistributables 已安装在其他机器上。仔细检查这是在另一台机器上运行 Dependency Walker 的问题,它会告诉你它在寻找什么:http: //www.dependencywalker.com/

您可以在 microsoft 网站上找到 VC 2008 redist EXE:http: //www.microsoft.com/en-us/download/details.aspx?id= 29

或者实际的 DLL 在 VC 2008 安装文件夹的 redist 文件夹中。

于 2012-06-06T13:49:56.157 回答
0

除了@snowdude 所说的正确之外,还有另一个可能的问题:如果这些其他 PC 没有安装 VS2008,并且您链接到调试 MSVCR* 库,那么您就不走运了。只有 Release 模式的二进制文件可以部署到用户系统,而无需跳跃。

于 2012-06-06T13:57:15.387 回答
0

实际上你可以用谷歌搜索“并排配置不正确”,你会发现很多提示可能是什么原因。但是...首先尝试一下:在 VS 中,项目设置,C/C++,代码生成:将“运行时库”设置为“多线程”(或“多线程调试”。(顺便说一句:你需要通用语言运行时支持?)

于 2012-06-06T09:24:08.700 回答