vcruntime140.dll与vcruntime140d.dll的区别

16
这两个dll文件vcruntime140.dllvcruntime140d.dll有什么区别?为什么我们需要它们?它们都是Microsoft Visual C++ 2015 Redistributable的一部分吗?
已经进行了相当长时间的谷歌搜索,但找不到我能理解的信息。
背景:我有一个在Windows 10计算机上运行但在Windows Vista上无法运行的C#程序,看起来是因为我的Windows Vista计算机上没有vcruntime140d.dll。

vcruntime140.dll 是发布版本 - 您必须将其与使用发布设置构建的项目一起使用。vcruntime140d.dll 是调试版本 - 您必须将其与使用调试设置构建的项目一起使用。 - Jerry Jeremiah
1
D版本通常不可再分发... - Alexei Levenkov
@JerryJeremiah 谢谢,你说得很到位,结果是我使用了调试版本来分发我的应用程序。请将其写成答案,以便我可以接受。 - Bon
@AlexeiLevenkov 谢谢,所以我有d版本是因为我安装了Visual Studio? - Bon
@Bon 是的,你应该编译发布版本进行分发。 - Alexei Levenkov
1个回答

23

虽然我在 Microsoft 的网站上没有找到任何权威的信息,但他们总是会发布两个版本的 DLL:

  • 一个不以 d 结尾的发布版本,例如:vcruntime140.dll
  • 一个以 d 结尾的调试版本,例如:vcruntime140d.dll

你需要使用正确的版本,因为编译器使用的库是根据项目是使用调试或发布设置来选择的。所以如果你使用发布设置编译,则可执行文件将使用 vcruntime140.dll,如果你使用调试设置编译,则可执行文件将使用 vcruntime140d.dll。


2
你正在寻找的链接 - 确定哪些DLL是可再分发的:“应用程序的调试版本和各种Visual C++调试DLL不可再分发。” - Alexei Levenkov
1
@AlexeiLevenkov,您的链接已经失效,但似乎是这个链接:哪些DLL需要重新分发 - Morten Jensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接