当前位置:首页 » 编程软件 » 静态编译qtqml程序发布

静态编译qtqml程序发布

发布时间: 2023-03-12 05:54:16

❶ 请哪位来解释一下Qt静态编译和动态编译的区别

静态编译与动态编译的区别:
1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。
所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。
缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。

❷ QT 静态编译

qt 开源版本 不允许静态编译
可以将DLL打包,就能再其他的机器上运行了.
请采纳。

❸ 使用Qt静态库为什么运行出错

因为你链接的是qt的动态库,在没有qt动态库的系统上肯定是运行不了的。有两种方法,一种是静态编译,但会让运行文件变大。第二种就是把动态库和程序一起打包出去,路径设置

把 main.cpp 改成下面这样,再重新编译项目就可以了:
#include <QApplication>
#include <QQmlApplicationEngine>
//1. add headers
#include <QtPlugin>
#include <QtQml>
//2. add Q_IMPORT_PLUGIN
#if defined(QT_STATIC) && !defined(Q_OS_MAC) && !defined(QT_NAMESPACE)
#include <QQmlExtensionPlugin>
Q_IMPORT_PLUGIN(QWindowsIntegrationPlugin)
Q_IMPORT_PLUGIN(QtQuick2Plugin)
Q_IMPORT_PLUGIN(QtQuickControlsPlugin)
Q_IMPORT_PLUGIN(QtQuickLayoutsPlugin)
Q_IMPORT_PLUGIN(QtQuick2WindowPlugin)
#endif
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QQmlApplicationEngine engine;
//3. registerTypes
#if defined(QT_STATIC) && !defined(Q_OS_MAC) && !defined(QT_NAMESPACE)
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance())->registerTypes("QtQuick");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls.Private");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->registerTypes("QtQuick.Controls.Styles");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickLayoutsPlugin().instance()) ->registerTypes("QtQuick.Layouts");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2WindowPlugin().instance()) ->registerTypes("QtQuick.Window.2");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2Plugin().instance()) ->initializeEngine( &engine, "QtQuick");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickControlsPlugin().instance())->initializeEngine( &engine, "QtQuick.Controls");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickLayoutsPlugin().instance()) ->initializeEngine( &engine, "QtQuick.Layouts");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuickLayoutsPlugin().instance()) ->initializeEngine( &engine, "QtQuick.Layouts");
qobject_cast<QQmlExtensionPlugin*>(qt_static_plugin_QtQuick2WindowPlugin().instance()) ->initializeEngine( &engine, "QtQuick.Window.2");
#endif
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
return app.exec();
}

❹ QT 5.5.0 怎么设置才能实现静态编译

qt默认的编译方式是动态编译的,但是有时候编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译程序,qt要实现静态编译必须库文件也是静态编译的,可以用这个命令编译静态库:
1.将c:\qt\2010.05\qt\mkspecs\win32-g++\qmake.conf文件中的qmake_lflags
=
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
改为
qmake_lflags
=
-static
-enable-stdcall-fixup
-wl,-enable-auto-import
-wl,-enable-runtime-pseudo-reloc
2.在开始菜单里找到qt
command
prompt并运行,输入命令:
configure
-static
-debug-and-release
-no-exceptions
-l
"c:\qt\2010.05\qt\include"
-l
"c:\qt\2010.05\qt\lib"
-l指定一下路径,防止用到vc的头文

❺ Qt creator 如何设置静态编译

Qt默认
编译

态编译

编写
程序要发布

态库文件
繁琐
需要静态编译
程序
Qt要实现静态编译必须库文件
静态编译

命令编译静态库:1.
C:\Qt\2010.05\qt\mkspecs\win32-g++文件
QMAKE_LFLAGS
=
-enable-stdcall-fixup
-Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-reloc

QMAKE_LFLAGS
=
-static
-enable-stdcall-fixup
-Wl,-enable-auto-import
-Wl,-enable-runtime-pseudo-reloc2.
始菜单

Qt
Command
Prompt并运行
输入命令:
configure
-static
-debug-and-release
-no-exceptions
-L
"C:\Qt\2010.05\qt\include"
-L
"C:\Qt\2010.05\qt\lib"-L指定
路径
防止用
vc
文件选择
源:O;选择license:y;3.
条命令运行

再输入命令:
mingw32-make
sub-src等1
~3

运行完

ok

❻ 求助,QML程序发布之后在别人的电脑上无法正常运行

应该是缺少库依赖,别人电脑上没有QT的库,或者没有指定库的路径,解决办法

  1. 静态编译,编译出来的程序会比较大。。

  2. 通过工具(如Depends)看看程序运行需要什么库,然后复制到执行文件的目录。


❼ 如何静态编译发布Qt应用程序

如果你说的是Qt程序的话,静态编译就得自行从源码开始编译Qt静态库,官网预编译的版本是不包含静态库的。这个很复杂,请参考qt-everywhere-opensource 中提供的编译帮助。注意如果使用miongw的话,gcc版本最好不要是4.6.2。这个版本比较特殊,但是它是mingw官方版的最新打包版本。
如果你说的是非qt库依赖的话,有两种mingw和vs,前者有部分发行版默认去除了dll依赖,直接连接的静态库,后者非常不推荐使用静态库,毕竟它加载的是系统常用dll,基本上所有系统都是推荐安装的运行时环境,用静态库吃力不讨好。

❽ Qt5.12.5 静态编译以及裁剪大小对比

最近在研究用静态编译的 Qt 做个 Qt 的安装包程序,因为 nsis 在界面自定义还有多语言适配等问题上不太理想。做安装包程序基本上只需要有最基础的 Qt 界面模块即可,不过把除了 UI 的模块全部去掉又比较难用...这里记录下两种极端编译配置下生成的程序大小作为参考。

编译需要的环境可以看官方文档, windows-requirements 中的 Building from Source 有说明需要安装的工具,所有工具都记得要添加到环境变量。

最后的-mp 是多核编译的参数,多核编译用 jom 快得一匹,全模块也只要 20 分钟编译完成。

这个配置把能删的模块都删了,编译出来后基本也就基础UI相关类能用...所以编译起来超快的。

比全模块配置生成的exe减少了 30%的大小,不过 30%也就 3M,在 windows 平台的话倒是没必要追求这种极致了=-=

此时如果是移动了编译后的路径,可能报错 Qt version is not properly installed,please run make install 。在 qmake.exe 所在目录新建一个 qt.conf 文件,并添加下面的内容即可:

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:741
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1005
python中的init方法 发布:2025-10-20 08:17:33 浏览:712
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:874
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:773
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1120
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:346
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:224
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:910
python股票数据获取 发布:2025-10-20 07:39:44 浏览:869