QTextCodec::codecForName导致的乱码遇到好几次了,每次都花费大量时间取查找,很坑,记录如下:
在空电脑上部署,一部分是正常显示,一部分是乱码显示。安装完开发环境又好了。
从乱码处分析后,发现QTextCodec::codecForName(“GBK”)返回空值,原因是未正常加载中文插件qcncodecs4.dll
使用addLibraryPath函数来修改插件加载位置
QString sPath = QString("./plugins/");
a.addLibraryPath(sPath);
过程中还遇到
LDR: LdrpWalkImportDescriptor() failed to probe ***.dll for its manifest, ntstatus 0xc0150002
这是因为库文件使用了manifest文件,依赖了VC运行库,"Microsoft.VC90.DebugCRT" version="9.0.21022.8" 和 "Microsoft.VC80.DebugCRT" version="8.0.50727.4053"。
这个库文件夹在vc安装目录下,需要拷贝到依赖的dll目录下