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
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
//