使用 VC++ 创建跨计算机 DLL

Cross-machine DLL creation using VC++

本文关键字:计算机 DLL 创建 VC++ 使用      更新时间:2023-10-16

我使用 VC++ 2008 创建了一个具有以下设置的 DLL 文件:

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

创建的 DLL 在我的机器(创建它的机器)上运行良好,但不能在另一台机器上使用(我用 3 台机器测试过)。有关更多详细信息,我通过JNI(Java本机接口)加载此DLL文件。在我的机器上它可以工作,但在其他机器上它显示错误"java.lang.UnsatisfiedLinkError::应用程序无法启动,因为它的并行配置不正确。

我的问题是:1.创建无法在多个环境中工作的DLL时,我是否错过了任何配置?2.我们可以创建一个可以在不同机器上运行的DLL文件吗?

非常感谢!

您需要确保 VC++ 2008 可再发行组件已安装在其他计算机上。要仔细检查这是问题所在,请在另一台计算机上运行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 文件夹中。

实际上,

您可以在谷歌上搜索"并行配置不正确",您会发现很多提示原因可能是什么。但。。。先试试这个:在VS,项目设置,C/C++,代码生成中:将"运行时库"设置为"多线程"(或"多线程调试"。(顺便说一句:您需要公共语言运行时支持吗?

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