VISUAL C ++可执行文件和失踪MSVCR100d.dll(Visual C++ execut

2019-06-24 02:36发布

我知道这已被要求在其他地方,并回答了,但我有我已经开发了C ++可执行文件,但与微软的Visual Studio 2010中的问题,如果我运行的机器上的发布版本不具有VC ++运行时库(即msvcr100d.dll),我得到的“程序无法启动,因为msvcr100d.dll从计算机中缺少”的错误。

这是奇怪的,原因有二:

  • 为什么尝试与可再发行的调试版本链接?
  • 我试图运用此修复程序 ,运行时库设置的设置来的/ MT不是/ MD(多线程DLL),但只有使问题恶化(如果我手动复制msvcr100d.dll,它接着说,它无法找到msvcp110 .DLL)。

我怎么能和我的可执行程序包的运行时库,这样我就可以在没有MS VC 2010或可再发行组件安装的机器上运行呢?

我知道它被认为存在安全风险包括DLL,因为它永远不会被更新的副本,但我的目标只是这个可执行文件发送给几个朋友在短期内。

Answer 1:

你,如果你在“发布”模式下编译绝对不应该需要CRT的调试版本。 你可以告诉他们是dll的调试版本,因为他们有一个结束d

更重要的一点,调试版本不是可再发行,所以它不是那么简单的“包装”它与你的可执行文件,或拉上了这些DLL。

检查你正在编译中的“释放”模式应用程序的所有组件可以肯定,那你链接CRT和你使用任何其他库(如MFC,ATL等)的正确版本。

的,当然需要msvcr100.dll (注意缺少的d后缀)和其他一些如果它们尚未安装。 将您的朋友下载的Visual C ++ 2010可再发行 (或64 ),或通过建立一个安装程序会自动包括此与您的应用程序。



Answer 2:

对我来说,问题出现了这种情况:

我安装VS2012并没有需要VS2010了。 我希望得到我的电脑清洁,还删除了VS2010运行时可执行文件,认为不会有其他程序会使用它。 然后,我希望通过它连接到一个程序(我们称之为程序X)来测试我的DLL。 我得到了同样的错误消息。 我以为我编译DLL时做错事。 然而,真正的问题是,我附DLL节目x和程序X在VS2010与调试信息编译。 这就是为什么抛出的错误。 我重新编译程序X在VS2012,错误不见了。



Answer 3:

这个问题在解释MSDN库 ,并按照我的理解安装微软的再发行组件包可以提供帮助。

但有时在下述溶液都可以使用(如显影剂的侧溶液):

在您的Visual Studio中,打开Project properties -> Configuration properties -> C/C++ -> Code generation和变化选项Runtime Library/MT ,而不是/MD



Answer 4:

通常认为错过.dll文件,应用程序指示你所需要的版本 - 如果一个人不工作,只需下载的Microsoft Visual C ++ 2010从这个链接x86或x64:

对于32位操作系统: 这里

对于64位操作系统: 这里



Answer 5:

我得到了同样的错误。

我是在一个VS2012项目闯民宅一个VS2010 DLL。

只需重新编译在VS2012的DLL,现在一切都很好。



Answer 6:

在VC ++库dll的调试版本是注定不会被重新分配!

应用程序的调试版本不发行的,在Visual c的调试版本++库DLL是不可再发行。 您可以部署的应用程序和Visual C ++ DLL的调试版本只到其他计算机,用于调试的目的,并在没有安装Visual Studio的计算机上测试应用程序。 欲了解更多信息,请参见重新发布的Visual C ++文件。

我会提供的链接,以及: http://msdn.microsoft.com/en-us/library/aa985618.aspx



文章来源: Visual C++ executable and missing MSVCR100d.dll