【发布时间】:2021-10-03 12:01:17
【问题描述】:
最近我一直在学习 C++,为了测试我一直在学习的一些技能,我在控制台应用程序中制作了一个简单的二十一点游戏。我的朋友问我是否可以将它发送给他,以便他尝试一下,但是当他尝试运行它时,他收到一条错误消息,提示“代码执行无法继续,因为找不到 MSVCP140D.dll”。我已经知道解决这个问题的简单方法就是让他下载带有 C++ 可再发行包的 Visual Studio,但我想知道是否可以实施一个修复程序来允许该文件为没有安装 Visual Studio 的人运行.我想知道是否有人可以帮助我解决此问题或链接有关如何解决此问题的文章。谢谢
编辑:由于某种原因,尽管在发送程序之前以发布模式构建程序,但他仍然收到缺少调试 DLL (MSVCP140D.dll)、另一个调试 DLL (VCRUNTIME140D.dll) 和 urctbased.dll 的错误
【问题讨论】:
-
我已经知道解决这个问题的简单方法就是让他下载带有 C++ 可再发行包的 Visual Studio -- 安装完整的 IDE 和编译器并不是一件容易的事. -- 但我想知道是否可以实施一个修复程序以允许该文件为没有安装 Visual Studio 的人运行。 -- 现在,您认为 Microsoft 没有用 Visual C++ 编译的程序能够分发给公众的方式是什么?现在在您的计算机上运行的一些程序是使用 Visual C++ 编译的。
-
MSVCP140D.dll是运行时的debug版本,debug版本不可再发行。 -
在发行版中将运行时设置为
Multi-threaded (MT),而不是MTd。如果我没记错的话,可以在Code Generation找到。这样做时,Visual C++ 将在您的应用程序中嵌入 VC++ 运行时库。 -
@Asesh 非常感谢!这解决了这个问题。您介意将其重新评论为答案,以便我可以将其标记为我的问题的答案吗?
-
这能回答你的问题吗? Should I compile with /MD or /MT?
标签: c++ visual-c++ c++17 publishing