[英]Visual C++ executable and missing MSVCR100d.dll
我知道这已在其他地方被问过并回答了,但我遇到了MS Visual Studio 2010的问题。我开发了一个C ++可执行文件,但是如果我在没有VC ++运行时库的机器上运行Release版本(即,msvcr100d.dll),我得到“程序无法启动因为你的计算机缺少msvcr100d.dll”错误。
这有点奇怪,原因有两个:
如何将运行时库与我的可执行文件打包在一起,以便我可以在没有安装MS VC 2010或可再发行组件的机器上运行它?
我知道包含DLL副本的安全风险因为它不会被更新,但我的目标只是在短期内将此可执行文件发送给几个朋友。
如果您正在以“发布”模式进行编译,那么您绝对不需要CRT的调试版本。 您可以告诉它们是DLL的调试版本,因为它们以d
结尾。
更重要的是,调试版本不是可再发行版本,因此它不像使用可执行文件“打包”它或者压缩这些DLL那么简单。
检查以确保您正在以“发布”模式编译应用程序的所有组件,并且您正在链接正确版本的CRT和您使用的任何其他库(例如,MFC,ATL等)。
当然,您将需要msvcr100.dll
(请注意缺少d
后缀)和其他一些(如果尚未安装)。 指导您的朋友下载Visual C ++ 2010 Redistributable (或x64 ),或通过构建安装程序自动将其包含在您的应用程序中。
对我来说,问题出现在这种情况:
我安装了VS2012,不再需要VS2010了。 我想让我的计算机干净并且还删除了VS2010运行时可执行文件,认为没有其他程序会使用它。 然后我想通过将它附加到程序来测试我的DLL(让我们称之为程序X)。 我收到了同样的错误消息。 我认为编译DLL时我做错了。 但是,真正的问题是我将DLL附加到程序X,而程序X是在VS2010中使用调试信息编译的。 这就是抛出错误的原因。 我在VS2012中重新编译了程序X,错误消失了。
在MSDN Library中解释此问题,据我所知,安装Microsoft的Redistributable Package可以提供帮助。
但有时可以使用以下解决方案(作为开发人员的解决方案):
在Visual Studio中,打开Project properties -> Configuration properties -> C/C++ -> Code generation
并将选项Runtime Library
更改为/MT
而不是/MD
我得到了同样的错误。
我在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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.