释放模式仍依赖于MSVCP110D.dll(C+;+;MSVS) 我对C++编程很陌生,刚完成了一个简单的计算器。我决定和我的朋友们分享它,在几次尝试之后,我发现了如何在发布模式下编译它。但是,即使在发布模式下,它仍然依赖于MSVCP110D.dll。我想知道是否有办法解决这个问题?

释放模式仍依赖于MSVCP110D.dll(C+;+;MSVS) 我对C++编程很陌生,刚完成了一个简单的计算器。我决定和我的朋友们分享它,在几次尝试之后,我发现了如何在发布模式下编译它。但是,即使在发布模式下,它仍然依赖于MSVCP110D.dll。我想知道是否有办法解决这个问题?,c++,visual-studio,C++,Visual Studio,1)MSVCP110D.dll是MS C运行时库的“调试”版本的runtime.dll。因此,看起来您的.exe可能根本就没有为“发布”正确构建 2) 以下是“Visual Studio运行时可再发行”的信息: 3) 以下是有关此特定问题的更多信息: 不幸的是,msvcp100D.dll是一个调试dll,不包括在内 在微软Visual C++可重分配软件包中。这是becouse 通常调试版本不会发布给开发人员以外的其他人。 默认情况下,开发人员已使用Visual Studio安装了它 您可以

1)MSVCP110D.dll是MS C运行时库的“调试”版本的runtime.dll。因此,看起来您的.exe可能根本就没有为“发布”正确构建

2) 以下是“Visual Studio运行时可再发行”的信息:

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

不幸的是,msvcp100D.dll是一个调试dll,不包括在内 在微软Visual C++可重分配软件包中。这是becouse 通常调试版本不会发布给开发人员以外的其他人。 默认情况下,开发人员已使用Visual Studio安装了它

您可以在“Release”中编译您的项目,以便您需要的所有dll 将包含在微软Visual C++可重新分配包中。 否则,您可以执行所有库的静态链接(在中指定/MT) 调试配置中的Release和/MTd进入编译器选项):但是 就我个人而言,我不建议这样做,因为你放了很多可执行文件 将减慢应用程序速度的信息(由调试器使用)


我猜您的问题在于对dll调试版本的依赖性&而不是对dll本身的依赖性

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

  • 使用
    /DDEBUG
    /D_DEBUG
    进行编译,或

  • 链接到msvcpd.lib

  • 编译时使用<代码> /dCug < /> >或<>代码> >代码> >代码> >包含标准C++头中的一个,代码中的MVCP.D.LIB被拉入(使用一个PrApRead(LIB)< /COD> >,这导致对MSVCPD **.DLL.< /P>的依赖性。 MVCP(d)*.dll是标准C++库的DLL版本。

    如果你的问题是依赖于任何版本的DLL,即你想与C++库静态链接,那么你可以用<代码> > SistaCpPLIB < /C> >编译你的程序。


    可能您已经在可执行文件中包含了dll文件的调试版本。

    我正在使用的唯一外部资源是#include“stdafx.h”#include#include#include#include#但我的印象是,在发布模式下,这将消除对外部资源的所有需求,并将完全在其内部运行。如果您不解释您如何知道自己对msvcp100d.dll有依赖关系,这对您自己或我们都没有帮助。您在msvcp110.dll的发布版本中确实存在依赖关系,它包含iostream的代码。您需要将其与.exe、msvcr110.dll一起复制。或者只使用有效的/MT进行构建,对于不使用dll的简单程序很好。您是否尝试过使用Dependency Walker?很抱歉,我对此非常陌生。但是我如何进行静态链接dll?编译它时,我更改了编译器e从debug键入到release。然后它创建了一个包含my.exe和.cpp的release文件夹。@user2396111右键单击解决方案->属性,C/C++,预处理器->将_STATIC_CPPLIB添加到各种现有的预处理器定义中。此外,在那里,检查是否已经定义了debug或_debug。这不是问题,也是一个不推荐的oVS2012.C/C++中的选项,代码生成,运行时库=/MT@HansPassant,只希望您知道您为我节省了6个小时的生命。最近遇到了类似的问题。最奇怪的是,我生成的DLL依赖于MSVCR100.DLL(不带“D”),这是正确的,因为我将/MDd更改为/MD,但也依赖于MSVCP100D.dll,这似乎不正确,原因相同。经过长期调查,我发现这取决于预处理器定义。将_DEBUG更改为DEBUG为DEBUG为我解决了问题。