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库,来解决兼容性的问题
经验分享 程序员 微信小程序 职场和发展