0

我在 /MT 选项下编译了 ac/c++ DLL。它将由另一个程序加载。现在,只要我安装了 Visual Studio 2012(Express 或 Professional,两者都可以)(已安装,无需运行),这一切都可以正常工作:外部程序将毫无问题地加载 DLL。到目前为止,如果我去另一台没有安装 Visual Studio 2012 的机器,它不会加载。我收到错误“缺少依赖项...”。

我想知道:VS2012安装哪个环境没有它不可用?如果没有 VS2012,我怎样才能完成这项工作?为什么 VCRedist* 没有安装必要的环境?

注意: - 运行 dumpbin /DEPENDENTS mydll.dll 没有显示任何我不会安装和可用的依赖项......而且只要我安装 VS2012 进行测试,它就会在没有任何修改的情况下运行 - 我也在几个系统上测试了这个安装了各种 vcredist... 版本以确保一切正常。只要未安装 VS2012,它就不会启动(我没有尝试使用 VS2010 等,很可能也可以)

4

1 回答 1

0

我真的以为我检查了很多次我不会使用任何调试 DLL。到目前为止,我错过了一个!事实证明,zeromq libzmq-..-gd...dll 是不归路——gd 表示调试版本,而我的 dll 正在使用那里的函数。将包含和 .libs 更改为没有“gd”的 libzmq...dll 使得现在可以正确加载。当然,关于安装 vcredist 软件包等的所有评论也是正确的,但对我来说,在这种情况下不是问题(因为我安装了它们)。非常感谢您指出必须有一些调试编译的dll!

于 2013-03-22T17:14:42.420 回答