10

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

4

3 回答 3

7

1) MSVCP110D.dll 是 MS C 运行时库的“调试”版本的运行时 .dll。所以看起来你的 .exe 可能没有正确地为“发布”构建。

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 安装它。

您可以在“Release”中编译您的项目,因此您需要的所有 dll 都将包含在 Microsoft Visual C++ Redistrutable 包中。

否则,您可以执行所有库的静态链接(在 Release 中指定 /MT,在 Debug 配置中指定 /MTd 到编译器选项中):但我个人不推荐它,因为您在可执行文件中放入了许多信息(由调试器使用)会减慢您的应用程序。

于 2013-05-18T05:43:37.323 回答
4

我猜你的问题是依赖于 dll 的调试版本而不是依赖于 dll 本身。

你很有可能在做这两件事中的一件

  1. /DDEBUGor编译/D_DEBUG

  2. 与 msvcpd.lib 链接

当您使用/DDEBUGor/D_DEBUG#includeing 标准 C++ 头文件之一进行编译时,会拉入 msvcpd.lib,(with a #pragma(lib)这会导致依赖于 msvcpd***.dll。

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

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

于 2013-05-18T05:51:45.593 回答
0

您是否使用任何其他库?也许您在可执行文件中包含了一个调试版本的 dll 文件。

于 2013-09-10T15:50:20.663 回答