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

 

//

 

posted @ 2021-02-25 17:17  小城熊儿  阅读(580)  评论(0编辑  收藏  举报