发布模式仍然依赖于MSVCP110D.dll(C ++ MSVS)

时间:2013-05-18 05:37:29

标签: c++ visual-studio

我是C ++编程的新手,刚刚完成了一个简单的计算器。我决定与我的朋友分享它,经过几次尝试,想出如何在发布模式下编译它。但是,即使在发布模式下,它仍然依赖于MSVCP110D.dll。我想知道是否有办法解决这个问题?

3 个答案:

答案 0 :(得分:7)

1)MSVCP110D.dll是MS C运行时库的“调试”版本的运行时.dll。所以看起来你的.exe可能不是为了“Release”而正确构建的。

2)以下是“Visual Studio Runtime Redistributable”的信息:

http://www.microsoft.com/en-us/download/details.aspx?id=30679

3)以下是有关此特定问题的更多信息:

  

http://social.msdn.microsoft.com/Forums/en-US/Vsexpressvc/thread/e128dff6-cef5-4a81-b6de-fcbcaa7a23bb

     

不幸的是,msvcp100D.dll是一个调试dll,它不包括在内   在Microsoft Visual C ++ Redistrutable包中。这是因为   通常调试版本不会发布到开发人员之外。   开发人员默认使用Visual Studio安装它。

     

您可以在“发布”中编译项目,以便您需要所有的dll   将包含在Microsoft Visual C ++ Redistrutable包中。

     

否则,您可以执行所有库的静态链接(指定/ MT in   将Debug配置中的/ MTd释放到编译器选项中):但是   我个人不推荐,因为你把可执行文件放了许多   信息(由调试器使用)会降低您的应用程序速度。

答案 1 :(得分:4)

我猜您的问题依赖于dll&的调试版本。不依赖于dll本身。

你极有可能做这两件事之一

  1. 使用/DDEBUG/D_DEBUG OR

  2. 进行编译
  3. 与msvcpd.lib链接

  4. 使用/DDEBUG/D_DEBUG以及#include标准C ++标头进行编译时,会导致(with a #pragma(lib)中的msvcpd.lib导致依赖关系在msvcpd ***。dll。

    msvcp(d)*。dll是标准C ++库的dll版本。

    如果相反,您的问题是依赖于dll的任何版本,即您希望与C ++库静态链接,那么您可以使用_STATIC_CPPLIB编译您的程序。

答案 2 :(得分:0)

您使用的是其他库吗? 也许您已将可执行的dll文件的调试版本包含在内。