如何部署使用 MSCV 编译的 Qt 应用程序,以便它不会安装 vc_redist?

问题描述

有没有办法部署使用 MSVC 编译的 Qt 桌面应用程序,使其“可移植”(只需从文件夹运行 exe,不安装任何东西,甚至不安装 VC_redist)?

当然,如果目标计算机上安装了 Microsoft Visual C++ Redistributable,则可以使用它,但是是否可以在不安装的情况下使其运行(例如,通过将 vcredist 中的某些 dll 放入应用程序的文件夹中)?

>

解决方法

如果您静态构建/链接您的应用程序,您将只有 1 个没有 DLL 的 .exe。第二种方法是使用共享库构建您的应用程序,并且在运行时您的应用程序将在 PATH 和当前目录中搜索这些 DLL,因此您只需将所有需要的 DLL 放在此文件夹中。你如何管理你的 Qt 库?

,

正如您所评论的,您可以使用windeployqt 添加与Qt 相关的DLL 和资源。至于其他所需的 DLL,您可以使用 Dependencies 找到它们并手动将它们复制到您的应用程序文件夹中,包括 MSVC DLL。

PS:我知道手动复制这些 DLL 效率低且容易出错。这就是我问 Is there any way to search and copy all the DLL dependencies? 的原因,但我还没有找到足够智能的工具来自动完成这项工作。不过,您可以尝试使用评论中提到的那些工具,例如 NDepend