我知道这已被要求在其他地方,并回答了,但我有我已经开发了C ++可执行文件,但与微软的Visual Studio 2010中的问题,如果我运行的机器上的发布版本不具有VC ++运行时库(即msvcr100d.dll),我得到的“程序无法启动,因为msvcr100d.dll从计算机中缺少”的错误。
这是奇怪的,原因有二:
- 为什么尝试与可再发行的调试版本链接?
- 我试图运用此修复程序 ,运行时库设置的设置来的/ MT不是/ MD(多线程DLL),但只有使问题恶化(如果我手动复制msvcr100d.dll,它接着说,它无法找到msvcp110 .DLL)。
我怎么能和我的可执行程序包的运行时库,这样我就可以在没有MS VC 2010或可再发行组件安装的机器上运行呢?
我知道它被认为存在安全风险包括DLL,因为它永远不会被更新的副本,但我的目标只是这个可执行文件发送给几个朋友在短期内。
你,如果你在“发布”模式下编译绝对不应该需要CRT的调试版本。 你可以告诉他们是dll的调试版本,因为他们有一个结束d
。
更重要的一点,调试版本不是可再发行,所以它不是那么简单的“包装”它与你的可执行文件,或拉上了这些DLL。
检查你正在编译中的“释放”模式应用程序的所有组件可以肯定,那你链接CRT和你使用任何其他库(如MFC,ATL等)的正确版本。
你会的,当然需要msvcr100.dll
(注意缺少的d
后缀)和其他一些如果它们尚未安装。 将您的朋友下载的Visual C ++ 2010可再发行 (或64 ),或通过建立一个安装程序会自动包括此与您的应用程序。
对我来说,问题出现了这种情况:
我安装VS2012并没有需要VS2010了。 我希望得到我的电脑清洁,还删除了VS2010运行时可执行文件,认为不会有其他程序会使用它。 然后,我希望通过它连接到一个程序(我们称之为程序X)来测试我的DLL。 我得到了同样的错误消息。 我以为我编译DLL时做错事。 然而,真正的问题是,我附DLL节目x和程序X在VS2010与调试信息编译。 这就是为什么抛出的错误。 我重新编译程序X在VS2012,错误不见了。
这个问题在解释MSDN库 ,并按照我的理解安装微软的再发行组件包可以提供帮助。
但有时在下述溶液都可以使用(如显影剂的侧溶液):
在您的Visual Studio中,打开Project properties -> Configuration properties -> C/C++ -> Code generation
和变化选项Runtime Library
到/MT
,而不是/MD
通常认为错过.dll文件,应用程序指示你所需要的版本 - 如果一个人不工作,只需下载的Microsoft Visual C ++ 2010从这个链接x86或x64:
对于32位操作系统: 这里
对于64位操作系统: 这里
我得到了同样的错误。
我是在一个VS2012项目闯民宅一个VS2010 DLL。
只需重新编译在VS2012的DLL,现在一切都很好。
在VC ++库dll的调试版本是注定不会被重新分配!
应用程序的调试版本不发行的,在Visual c的调试版本++库DLL是不可再发行。 您可以部署的应用程序和Visual C ++ DLL的调试版本只到其他计算机,用于调试的目的,并在没有安装Visual Studio的计算机上测试应用程序。 欲了解更多信息,请参见重新发布的Visual C ++文件。
我会提供的链接,以及: http://msdn.microsoft.com/en-us/library/aa985618.aspx