【问题标题】:Which DLL(s) must I ship alongside my EXE to use the Windows 10 Universal CRT?我必须与我的 EXE 一起提供哪些 DLL 才能使用 Windows 10 通用 CRT?
【发布时间】:2018-08-10 14:05:53
【问题描述】:

我已使用 Visual Studio 2015 将 C 程序编译为 32 位 EXE,该 EXE 可动态链接到 CRT。我想让用户下载并运行这个 EXE,而不需要先运行 VCRedist 二进制文件。因此,我似乎需要“本地应用”部署一些 DLL。

假设用户的机器安装了通用 CRT(即是 Windows 10 或包含相关 Windows 更新的更早版本)。

仅将C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT\vcruntime140.dll 与我的 EXE 一起发送是否必要且足够

如果我使用 Visual Studio 2017,情况是否完全一样?

【问题讨论】:

  • 是的,也许 msvcp140.dll 也适用于 C++ 程序。 UCRT 是一个系统组件,由 Windows Update 维护。

标签: windows visual-studio visual-studio-2015 deployment windows-10


【解决方案1】:

如果您想避免在目标系统上运行 VCRedist,您必须将 ALL dlls 与您的 .exe 一起分发到以下 两个 目录中

第一

(VS2015) C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist\x86\Microsoft.VC140.CRT  
(VS2017) C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC\14.15.26706\x86\Microsoft.VC141.CRT 

第二

C:\Program Files (x86)\Windows Kits\10\Redist\ucrt\DLLs\x86

编译 64 位应用程序时,将目录中的“x86”替换为“x64”。

【讨论】:

    【解决方案2】:

    您可能希望静态链接您的依赖项。

    在 Visual Studio 中实现此目的的步骤是:

    1. 打开Project Properties
    2. 选择C/C++
    3. 选择Code Generation
    4. 对于Runtime Library,选择Multi-threaded (/MT)

    这适用于所有最新版本的 Visual Studio。生成的 EXE 应该是独立的。

    【讨论】:

    • 问题是“我必须与我的 EXE 一起提供哪些 DLL 才能使用 Windows 10 通用 CRT?”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2018-08-10
    相关资源
    最近更新 更多