使用VC ++创建跨机器DLL

时间:2012-06-06 08:57:53

标签: c++ visual-studio-2008 visual-c++ dll win32com

我使用VC ++ 2008创建了一个DLL文件,其中包含以下设置:

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

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

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

非常感谢你!

3 个答案:

答案 0 :(得分: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文件夹中。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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