QT打包exe教程+QT踩坑记录

Qt打包发布

首先将构建设置改成release模式(debugrelease的区别自行百度),构建不想生成多余文件夹就将Shadow build的勾去掉,点击构建会在release文件夹下生成一些文件和一个exe程序

将exe拷贝到某个文件夹下备用(此时的exe还不能运行,缺少相应的库)

打开,我这里选择的是: Qt 5.9.264-bit for Desktop (MSVC 2017),因为项目文件创建时选择的是 (MSVC 2017),按照相应的版本来

转到拷贝exe的文件夹下

输入命令:windeployqt 程序.exe

此时文件夹下会出现一些库,再点击exe就可以正确运行

发布

下安装载Enigma Virtual Box  Software Protection, Software Licensing, Software Virtualization

 

点击Files Option选择文件压缩,这样生成的exe的大小会小不少,点击ok点击Process生成新的exe,完成后即可运行

踩坑记录

问题一:Qt Create 使用QtXml问题记录

在Qt 提供的文档里


需要在.pro文件里添加配置保存,然后在代码中添加头文件

还需要关键一步:qmake

右键项目qmake,不做这一步则在.pro中的配置无效

问题二:

Qt Create中构建项目默认生成新的文件夹

若不想生成新的文件夹,在右侧项目选项中将Shadow build的勾去掉

问题三:

原因:在第一个.h中include第二个.h,又在第二个.h中包含第一个.h两个头文件都彼此包含了

解决,删除.h文件中其中一种包含,在.cpp中引用 

问题四:在一台电脑上使用Qt开发的项目文件,编译使用的Desktop Qt 5.9.2 MSVC2017 64bit,那么将该项目文件放在另一台只有MSVC2015编译环境的电脑上直接编译运行会报错,此时应该更改编译坏境如下图,点击现有的环境编译运行即可

问题五:main.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __thiscall CFindFileForm::CFindFileForm(class QWidge

qt5中运行时出现这个问题,起因是自己新建了一个类在.h文件中,在main.cppinclude了,链接时候出了问题,解决办法,删掉debugrelease文件夹,删掉makefile,重新编译。

问题六:报错:1 个无法解析的外部命令

这个问题的情况有很多,我的问题在于创建了一个子线程的类,在创建时没有点击继承父类,打算自己补上继承父类,但没有补上Q_OBJECT导致所写的信号不能识别

问题七:在不同线程之间通过信号和槽来传递自定义数据类型QVector<Vector_pixmap>的时候,发生了错误,直接见下面代码提示:

Vector_pixmap为自定义的结构体

解决办法如下:

在进行发射自定义结构体Vector_pixmap信号的文件里,添加头文件:#include <QMetaType>

同时在构造函数中,添加注册自定义类:

    //注册QVector<Vector_pixmap>类型

    qRegisterMetaType<QVector<Vector_pixmap>>("QVector<Vector_pixmap>");

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt打包exe文件有多种方法可以选择。下面是其中两种常用的方法: 方法一:使用Qt提供的工具windeployqt 1. 首先,使用Release方式编译你的Qt程序。 2. 打开命令提示符,并导航到你的Qt程序的构建目录。 3. 运行以下命令:windeployqt <your_program_name>.exe 这将自动复制所需的Qt库和依赖项到您的程序目录中,以确保您的程序可以在其他机器上正常运行。 方法二:使用Enigma Virtual Box打包工具 1. 首先,使用Release方式编译你的Qt程序。 2. 下载并安装Enigma Virtual Box工具。 3. 打开Enigma Virtual Box,并点击“Add files”按钮,选择你的Qt程序的可执行文件和所需的Qt库文件。 4. 在Enigma Virtual Box中设置你的程序的图标和其他选项。 5. 点击“Build”按钮,选择输出目录和输出文件名,然后点击“Build”按钮开始打包打包完成后,你将得到一个包含所有依赖项的独立的exe文件。 请注意,以上方法只是其中的两种常用方法,你也可以尝试其他的打包工具或方法来打包你的Qt程序。另外,为了确保打包成功,你可能需要手动拷贝一些Qt库文件和依赖项到你的程序目录中,具体的操作可以参考Qt官方文档或其他相关资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [C/C++ Qt 编译打包项目](https://blog.csdn.net/lyshark_csdn/article/details/127833969)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Qt程序打包成一个单独exe的方法](https://blog.csdn.net/childbor/article/details/125283893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值