[✔️]Qt的学习踩坑笔记

509 阅读2分钟

Qt安装

在线安装QT,下载安装器 在安装的过程中,需要手动选择安装的qt版本,已经相对于的tools,qt creator是一个ide,必须安装的。 如果忘记安装,可以重新打开Qt/MaintenanceTool.exe进行更新维护。

Qt发布release

windeployqt ./

windeployqt 是一个由 Qt 提供的命令行工具,用于部署 Qt 程序到 Windows 平台上。它可以自动将程序所依赖的 Qt 动态链接库和其他必要的文件复制到程序的运行目录,从而避免因缺少文件而无法运行。

例如,如果你的程序为 myapp.exe,可以通过以下命令行将其部署到当前目录下的 deploy 文件夹中:

windeployqt --release --no-compiler-runtime --no-opengl-sw myapp.exe

其中,--release 表示发布版本,--no-compiler-runtime 表示不包含编译器运行时库,--no-opengl-sw 表示不包含 OpenGL 软件渲染库。这些选项可以根据需要进行调整。

应用程序错误0x00007b

发布后有时启动应用程序会发生错误,大部分情况下都是debug、release、位数、qt版本混用导致的。

排查方向:

  • windeployqt的版本是否一致,一定要使用qt编译器对应的windeployqt,我这边更换过编译器版本,但是环境变量没有及时同步,导致配套的dll是不对应的。
  • 管理员身份启动cmd,执行sfc ./scannow,有一定的效果,我这边发现exe会自动以兼容模式运行,屏幕分辨率会异常,修复之前兼容模式是无法启动的。

最后定位到的问题

Qt5Positioning.dll导致的问题,

  • 左边是错误的版本
  • 右边是正确的版本,是我手动一个一个copy的

如何判断dll是32位还是64位?

  • 32位

  • 64位:

查询依赖的dll

visual studio自带工具,dumpbin /dependents “exe或dll的路径” 即可查询该exe的依赖项dll。

使用vs编译QT项目一直提示 machine type 不匹配的问题解决办法

一直提示Machine X86的问题 Debug.win32\Application.obj : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86' 我也尝试着将Target Machive 设置为X86了,仍旧提示这个问题:

突然想到,应该是qt的编译器我使用的是64位的

下载了32位的编译器

但是好像还是不行,于是将编译器设置为32位后

重新建立了新的工程,发现就可以了,应该也可以把项目整体都配置为64位,不过好多坑,就没有这样做