我是C ++编程的新手,刚刚完成了一个简单的计算器。我决定与我的朋友分享它,经过几次尝试,想出如何在发布模式下编译它。但是,即使在发布模式下,它仍然依赖于MSVCP110D.dll。我想知道是否有办法解决这个问题?
答案 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)以下是有关此特定问题的更多信息:
不幸的是,msvcp100D.dll是一个调试dll,它不包括在内 在Microsoft Visual C ++ Redistrutable包中。这是因为 通常调试版本不会发布到开发人员之外。 开发人员默认使用Visual Studio安装它。
您可以在“发布”中编译项目,以便您需要所有的dll 将包含在Microsoft Visual C ++ Redistrutable包中。
否则,您可以执行所有库的静态链接(指定/ MT in 将Debug配置中的/ MTd释放到编译器选项中):但是 我个人不推荐,因为你把可执行文件放了许多 信息(由调试器使用)会降低您的应用程序速度。
答案 1 :(得分:4)
我猜您的问题依赖于dll&的调试版本。不依赖于dll本身。
你极有可能做这两件事之一
使用/DDEBUG
或/D_DEBUG
OR
与msvcpd.lib链接
使用/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文件的调试版本包含在内。