qt mingw打包 msvc2017打包 中文乱码的几个解决方案(msvc不乱码,mingw乱码)
set project=test md exe\images copy /y .\%project%\release\*.exe .\exe\ copy /y .\%project%\images\*.jpg .\exe\images\ copy /y .\%project%\images\*.png .\exe\images\ copy /y .\%project%\images\*.gif .\exe\images\ copy /y .\%project%\images\*.ico .\exe\images\ cd .\exe for /f "delims=" %%i in ( 'dir /s/b *.exe') do set name=%%i C:\Qt\Qt5.14.2\5.14.2\msvc2017\bin\windeployqt %name% cd ..\%project%\ call .\make-exe.bat
goto explain ::注解 ::make-exe.bat md exe\images copy /y .\release\*.exe .\exe\ copy /y .\images\*.jpg .\exe\images\ copy /y .\images\*.png .\exe\images\ copy /y .\images\*.gif .\exe\images\ copy /y .\images\*.ico .\exe\images\ cd .\exe for /f "delims=" %%i in ( 'dir /s/b *.exe') do set name=%%i C:\Qt\Qt5.14.2\5.14.2\msvc2017\bin\windeployqt %name% :explain
一个更通用 msvc 的打包脚本,打包以后的文件放在了exe文件夹下 文件名 make-exe.bat
1 2 3 4 5 6 7 8 9 10 | md exe\images copy /y .\release\*.exe .\exe\ copy /y .\images\*.jpg .\exe\images\ copy /y .\images\*.png .\exe\images\ copy /y .\images\*.gif .\exe\images\ copy /y .\images\*.ico .\exe\images\ cd .\exe for /f "delims=" %%i in ( 'dir /s/b *.exe' ) do set name=%%i C:\Qt\Qt5.14.2\5.14.2\msvc2017\bin\windeployqt %name% |
文件目录如下
20210316 打包出现bug
如果是msvc打包,在别的电脑运行可能出现bug,找不到msvcp.dll文件,具体解决办法,百度有,安装vc的一个库,但是,在实际生产环境下安装时不符合场景的,因此可以尝试使用mingw方式打包,
但是直接使用以上脚本修改之后,打包出现无法定位的问题,
解决办法如下
使用qt自带的命令行打包,可以解决这个问题,推荐编译使用,32位程序,因为不知道现场具体是什么机器,32位准没错,并且性能要求不高
使用这个比较烦的一点是,还得自己cd到指定文件,然后执行 windeployqt XXX.exe
附加一个 copy-img-exe.bat
md exe\images copy /y .\release\*.exe .\exe\ copy /y .\images\*.jpg .\exe\images\ copy /y .\images\*.png .\exe\images\ copy /y .\images\*.gif .\exe\images\ copy /y .\images\*.ico .\exe\images\
附带:qt编译时候,对于汉字真的头疼,如果现场真的就是使用win的电脑,那就直接使用ANSI编码,哎,,,,,,搞死人了
如果真的想真的保证没问题,建议自己在别处转换成char数组,然后指定编码格式编码,这样麻烦,但是绝对保证没问题,不想麻烦就按照上面的试一试
文件编码方式:ANSI 我使用的是notepad++转的码 (qt默认使用的utf8,但是微软支持有bug,这个在自己电脑上没问题,但是在别的电脑上就难说了,泪呀.....)
在有需要汉字的地方,使用 fromLocal8Bit eg: QString::fromLocal8Bit("串口已经关闭....:")
另一个方式
在mingw中
//附加另一种中文乱码的解决方式 (推测文件编译时,是根据现在的文件的编码类型进行的,因此,如果使用utf8编码,就使用
QString::fromUtf8
)
最好直接转为utf8 ,不要带有bom
工具->选项->文本编辑器->行为 utf8 bom 选择总是删除. 默认编码选utf8 这样可以与文本文件一致,
注意 msvc下编码无问题,不代表mingw就一定ok
//
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构