我正在使用Visual Studio 2015、SDL2和64位Windows 10在C++中编写项目。最近我购买了一台新的Windows 10笔记本电脑,并从github克隆了我的项目。我的项目编译正确,但运行时出现以下错误:
应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序。
根据我的研究,这个错误通常是由于加载不兼容的DLL引起的,例如64位版本而不是32位版本。我找到的建议包括:
- 检查我是否使用32位版本的SDL2 DLL
- 安装/重新安装Visual Studio 2015的x86版本Visual C++ Redistributable
- 使用Dependency Walker来排除故障的DLL
我的项目设置为Win32构建,我已确保我正在使用所有显式链接的DLL的32位版本(libfreetype-6,libpng16-16,SDL2,SDL2_image,SDL2_mixer和SDL2_ttf)。我确认x86 VC++ Redistributable已安装在我的机器上。
最后,我尝试使用Dependency Walker确定可能导致问题的DLL(虽然我已经阅读了对依赖项Walker有很多误报的警告)。以下是结果:
在那之后,分析器就会冻结并且永远不会继续执行。请注意,SDL组件和VC运行时加载时没有错误。
这个程序在我的两台旧电脑上编译和加载都正确,在一台运行32位Windows 7,另一台运行64位Windows 10。
现在实际的问题是,我可以采取哪些其他步骤来调试这个崩溃?还是有人从我提供的信息中看出我做错了什么?
相关问题:
编辑:
如rflobao建议的那样,我正在使用64位版本的Dependency Walker对32位exe进行分析。这是我的新分析结果:
到目前为止,与以前一样,Dependency Walker会卡住。我仍然一筹莫展,感觉离确定问题的原因更远了。