Visual Studio 2015。在安装项目中转换为所有 dll 的 c++ 控制台应用程序

Posted

技术标签:

【中文标题】Visual Studio 2015。在安装项目中转换为所有 dll 的 c++ 控制台应用程序【英文标题】:visual studio 2015. c++ console application converted in setup project with all dll 【发布时间】:2016-10-26 22:33:59 【问题描述】:

所以我对 VS 和编码还很陌生,我最近在一个 C++ 控制台应用程序项目中制作了一个小蛇游戏,它运行良好,但我想让它在没有 VS 的另一台 PC 上运行。我发现最接近回答我的问题的是这些 *** 其他问题 here 和 here。我已经安装了 vs 安装程序项目扩展以尝试使其成为安装项目并包含所需的依赖项,但我无法弄清楚如何做到这一点。有没有人有任何信息可以指导我完成这个问题的最后一步,还是我完全走错了路?

【问题讨论】:

Deploying Native Desktop Applications (Visual C++). 【参考方案1】:

如果应用程序使用动态运行时(这是默认设置),它使用 VS DLL 文件。要提供它们,需要在目标机器上安装该特定 VS 版本的 Visual Studio Runtime Redistributable(如您的第二个链接中所述)。

这意味着您需要以这种方式设置安装程序。我没有使用它,但生成的设置可能包含一些选项,或者自动下载和安装 VS 可再发行组件。

参见这里:How to install redistributable with visual studio setup?(但它是针对 VS 2013 的,2015 年可能会有一些变化)

【讨论】:

除非应用程序链接到Universal CRT,这是一个Windows组件。 现在我会研究一下,看看它是否能帮助我弄清楚如何设置安装程序。谢谢【参考方案2】:

好吧,你没有告诉我们你的 C++ 控制台应用程序是什么类型的项目......

仅使用 C++,您的应用可以使用不同版本的 CRT 构建,例如:

V120 (VS-2013) V120_XP(支持 XP 的 VS-2013) V140 (VS-2015) V140_XP(支持 XP 的 VS-2015)

即使在 VS 2015 上,您也可以选择所需的 CRT 版本,并在需要时使用旧版本。

无论如何,目标计算机将需要正确 CRT 版本的 DLL。 微软provides them。如果您有自定义安装程序,您可以将它们与您的产品一起提供,也可以使用 Microsoft 提供的安装程序。

MSDN - Determining Which DLLs to Redistribute

例如,使用 V120:

msvcp120.dll msvcr120.dll

您的项目也可能使用 .NET。 在这种情况下,您还需要在主机中安装正确的版本。

【讨论】:

C++ 应用程序中没有 CLR。​​ 很抱歉,我说我对此很陌生。当我开始项目时,我选择了 win32 控制台应用程序。我不知道我可以选择不同的 CRT 版本。我正在使用依赖walker,它告诉我它的MSVCP140D.dll、VCRUNTIME140D.dll、UCRTBASED.dll 和KERNAL32.dll。我承认我正在努力制作安装文件或安装程序,以使其在目标 PC 上成为用户友好的安装。 @MaxCo:您不得发布 CRT 的调试版本(msvcp140d.dll、vcruntime140d.dll、ucrtbased.dll)。这些是 Visual Studio 的一部分,不可分发。我不知道 "KERNAL32.dll" 是什么。无论如何,不​​要过度依赖 Dependency Walker。在几年前停止服务之前,它曾经是一个很好的工具。

以上是关于Visual Studio 2015。在安装项目中转换为所有 dll 的 c++ 控制台应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2015 中创建安装程序?

如何在visual studio2015 中配置编写C,C++程序

Visual Studio 2015。在安装项目中转换为所有 dll 的 c++ 控制台应用程序

PhoneRTC Cordova 插件不会安装在 Visual Studio Cordova 项目中

Visual Studio 2015在.NET Core RC2项目中的一个错误。

无法在 Visual Studio 2015 中安装任何包