我是 C++ 编程新手,刚刚完成了一个简单的计算器。我决定与我的朋友分享它,经过几次尝试,我想出了如何在发布模式下编译它。但是,即使在发布模式下,它仍然依赖于 MSVCP110D.dll。我想知道是否有办法解决这个问题?
3 回答
1) MSVCP110D.dll 是 MS C 运行时库的“调试”版本的运行时 .dll。所以看起来你的 .exe 可能没有正确地为“发布”构建。
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 安装它。
您可以在“Release”中编译您的项目,因此您需要的所有 dll 都将包含在 Microsoft Visual C++ Redistrutable 包中。
否则,您可以执行所有库的静态链接(在 Release 中指定 /MT,在 Debug 配置中指定 /MTd 到编译器选项中):但我个人不推荐它,因为您在可执行文件中放入了许多信息(由调试器使用)会减慢您的应用程序。
我猜你的问题是依赖于 dll 的调试版本而不是依赖于 dll 本身。
你很有可能在做这两件事中的一件
用
/DDEBUG
or编译/D_DEBUG
与 msvcpd.lib 链接
当您使用/DDEBUG
or/D_DEBUG
和#include
ing 标准 C++ 头文件之一进行编译时,会拉入 msvcpd.lib,(with a #pragma(lib)
这会导致依赖于 msvcpd***.dll。
msvcp(d)*.dll 是标准 C++ 库的 dll 版本。
相反,如果您的问题是依赖于任何版本的 dll,即您希望与 C++ 库静态链接,那么您可以使用_STATIC_CPPLIB
.
您是否使用任何其他库?也许您在可执行文件中包含了一个调试版本的 dll 文件。