我知道这个问题在其他地方已经被问过并回答了,但是我在使用MS Visual Studio 2010时遇到了问题。我开发了一个C++可执行文件,但如果我在没有VC++运行库(即msvcr100d.dll)的机器上运行Release版本,将会出现“程序无法启动,因为在您的计算机上找不到msvcr100d.dll”错误。
这很奇怪,有两个原因:
- 为什么它要链接到可重定位库的调试版本?
- 我尝试应用这个修复,将运行库设置为/MT而不是/MD(多线程DLL),但这只会使问题变得更糟(如果我手动复制msvcr100d.dll,则会提示找不到msvcp110.dll)。
我该如何打包运行库和我的可执行文件,以便在没有安装MS VC 2010或可重定位库的机器上运行它?
我知道在副本中包括DLL被认为是一种安全风险,因为它永远不会更新,但我的目标只是在短期内将这个可执行文件发送给几个朋友。
/MT
设置会让情况变得更糟是什么意思?这应该是为了消除对DLL运行时的依赖关系。你的项目是否依赖于其他DLL文件?它们可能是错误地依赖于调试运行时的原因。类似Dependency Walker这样的工具可以帮助你确定是否存在这种情况:http://www.dependencywalker.com - Michael Burr