Qt静态链接和部署

65 windows deployment qt static

我正在尝试部署(发布到公共)我最近制作的一个简单的qt应用程序,但却陷入静态链接qt库.

我按照qt docs上的指南来静态重建qt和我的应用程序.但是发布版本仍然需要qtgui/qtcore dll没有明显的原因,我想知道以前有没有人见过这种问题?或者甚至更好,已成功解决了吗?

http://doc.qtsoftware.com/4.5/deployment-windows.html

Cha*_*rns 42

我写了静态链接指南

以及 如何使用多个编译器构建Qt静态并保持较小

(因为它可以变得非常大,特别是对于简单的程序).您可能还想查看BitRock安装程序,它对于开源项目是免费的.

简而言之,如果你使用任何Qt认为是插件的东西,例如支持大多数图像类型(JPEG,GIF)或数据库,它会变得更复杂一些.例如,如果要包含对图标的Oracle DBMS和GIF图像的支持,请将以下内容添加到.PRO文件中:

QTPLUGIN += qsqloci qgif
CONFIG += static
Run Code Online (Sandbox Code Playgroud)

然后,您需要:

#include <QtPlugin>
Run Code Online (Sandbox Code Playgroud)

在您的项目中,并导入使用的任何插件.您需要按顺序更改这些设置以使其再次使用动态链接进行编译(例如在调试或添加功能时),尽管这可以轻松实现自动化.在构建用于静态链接的Qt库时也需要考虑,尽管Qt指令至少可以帮助您入门.

  • 如果您静态链接,请注意许可问题. (12认同)
  • Wayback Machine链接如下.第一个链接是关于Qt4与应用程序的静态链接的文章.第二个链接是关于将Qt构建得更小并且能够进行静态链接的文章.http://web.archive.org/web/20120729010312/http://www.formortals.com/how-to-statically-link-qt-4 http://web.archive.org/web/20120723142656/http ://www.formortals.com/build-qt-static-small-microsoft-intel-gcc-compiler (4认同)
  • @JaredGlass您会很高兴知道该链接已备份. (3认同)

Rei*_*ica 16

使用Qt 5.5,事情很简单.configure在构建Qt时,您传递了以下正交设置:

  1. 你想要一个静态的Qt库吗?

    -static 选项应该传递给 configure

  2. 您是否希望Qt和应用程序的构建使用静态C++运行时?

    -static-runtime 选项应该传递给 configure

  3. 你想要XP定位吗?

    -target xp 选项应该传递给 configure

    此外,请按照此博客文章中的说明操作.

    Qt Creator至少在v.3.5.0之前不支持XP自动定位,因为它没有正确设置构建工具的环境.您必须根据博客文章手动修改构建环境.

  • @ user2962533不,这是关于在构建Qt之前运行的`configure`脚本. (2认同)

Leg*_*las 6

另外,请注意,静态构建仍将动态链接到visual studio运行时!

请参阅此常见问题解答(互联网存档链接,以防链接消失):

为什么静态构建的Qt使用动态Visual Studio运行时库?我是否需要使用我的应用程序部署它们?

Qt使用-MD(d)开关构建,该开关链接到动态C/C++运行时库.这是必要的,因为我们在使用除-MD(d)标志之外的任何东西时都遇到了内存问题,并且通常建议使用.您不应该自己为您的应用程序更改此标志,因为如果您将标志更改为-MT,它将与Qt库的构建方式发生冲突.您也不应该为Qt更改它,因为它可能会导致问题.

但是,在使用-static选项时,Qt仍然是静态构建的,这意味着在部署应用程序时不需要分发Qt dll.您必须分发C运行时(如果目标计算机上尚不存在),请参阅我们的部署文档http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies.