【问题标题】:Is there a way to merge C++ executable with DLL's in VS 2019?有没有办法在 VS 2019 中将 C++ 可执行文件与 DLL 合并?
【发布时间】:2021-10-27 17:38:30
【问题描述】:

我最近想在另一台计算机上尝试我的 C++ 程序(用 VS 2019 社区版编写),但出现了一些错误,即缺少一些 DLL。有没有办法将这些 DLL 与 C++ 可执行文件(VCRUNTIME140D.dll 等)合并。

【问题讨论】:

  • 静态构建?还是让其他系统安装 VC 运行时(可单独下载)?
  • 您可以将所有 DLL 复制到可执行文件的目录中,但是对于具有自己的依赖链的 VC 运行时之类的东西,这是一个糟糕的主意。如果它是一个复杂的应用程序,则构建一个安装程序,否则只需按照@Someprogrammerdude 的建议在另一台机器上安装 VC 运行时。
  • 我用 vc redistributable(x86 和 x64)试过了,但都不起作用。
  • @3Dave 我刚刚制作了一个简单的小程序,它可以使用 Windows API 打开您的 CD-Tray。它可以在我的计算机上运行,​​但在其他计算机上无效。
  • 如果您想使用 VIsual C++ 可再发行组件,请确保您共享发布版本,而不是调试。或者,将您的项目设置更改为静态链接运行时库。

标签: c++ dll visual-studio-2019


【解决方案1】:

here 涵盖了 Visual C++ 程序的部署。

您可以“并排”部署所需的运行时文件,以将它们包含在您的程序设置、zip 文件等中。你可以在这里找到它们:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Redist\MSVC\14.29.30133\<arch>\Microsoft.VC142.CRT

支持静态链接 CRT,但不建议这样做。真正使用静态 CRT 的唯一一次是在构建安装程序/引导程序时。 如前所述,重新分发调试版本受到限制,因为它仅用于测试和开发,而不是“零售”版本。

或者,您可以只告诉用户自己下载并运行 Visual C++ 2019 redist 包:

X86(32 位)应用程序 - https://aka.ms/vs/16/release/VC_redist.x86.exe
X64 原生应用程序 - https://aka.ms/vs/16/release/VC_redist.x64.exe
ARM64 原生应用 - https://aka.ms/vs/16/release/VC_redist.arm64.exe

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多