VS2013之Windows平台兼容性问题
有时候生成的产品,由于客户电脑上一般都是没有安装VS的,导致运行会软件崩溃或者直接提示:The application was unable to start correctly (0xc000007b)。这些都是缺少一些系统的DLL问题引起的。
一、不同屏幕分辨率的兼容性问题
//Qt从5.6.0开始,支持High-DPI。 int main(int argc, char *argv[]) { #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif QApplication a(argc, argv); ...... }
使用这个方法可以解决大部分屏幕兼容性问题,方便快捷,但是如果在使用软件时修改了屏幕分辨率,那么会出现软件界面过大的问题
二、不能系统的动态库缺失的兼容性问题
1、使用VS查看生成的exe文件所有dll依赖库
打开文件
然后根据VS中生成的exe是32位还是64位来打开命令提示工具
然后使用命令进入exe运行的路径,再exe路径 + dumpbin /dependents exe名称.exe
或者直接dumpbin /dependents exe路径
如果名称有空格的需要带“”
回车后就会显示exe需要的依赖库
原则上建议将所有的库都和exe放在一起,以免在别的电脑上打开exe会提示什么乱七八糟的错误的问题,这些都是缺少库或者32/64不一致导致的
2、使用Dependency Walker工具查看exe使用的依赖库是否正确
Dependency Walker 是 Microsoft Visual C++ 中提供的非常有用的 PE 模块依赖性分析工具。
主要功能如下:
查看 PE 模块的导入模块。
查看 PE 模块的导入和导出函数。
动态剖析 PE 模块的模块依赖性。
解析 C++ 函数名称。
官网下载:
或者:
根据exe是32位还是64位来使用对应的工具
将要检测的exe使用拖到软件的工作区
通过这个软件可以知道exe缺少的DLL库,来解决兼容性的问题