Jon*_*man 10 c++ dll sdl-2 windows-10 visual-studio-2015
我正在使用Visual Studio 2015在64位Windows 10上使用SDL2编写C++项目.我最近购买了一台新的Windows 10笔记本电脑并从github克隆了我的项目.我的项目编译正确,但运行时出现以下错误:
应用程序无法正确启动(0xc000007b).单击"确定"关闭应用程序.
根据我目前的研究,这个错误通常是由加载不兼容的DLL引起的,例如64位版本而不是32位版本.到目前为止我发现的建议包括:
我的项目设置为Win32构建,我确保我使用的是我明确链接的所有DLL的32位版本(libfreetype-6,libpng16-16,SDL2,SDL2_image,SDL2_mixer和SDL2_ttf) .我已确认x86 VC++ Redistributable已安装在我的机器上.
最后,我尝试使用Dependency Walker来确定可能导致问题的DLL(虽然我已经读到了Dependency Walker有很多误报的警告).这些是结果:
在那之后,探查器冻结并且永远不会继续.请注意,SDL组件和VC运行时正在加载而没有错误.
该程序在我的两台旧机器上正确编译和加载,一台运行32位Windows 7,一台运行64位Windows 10.
现在是实际问题.我可以采取哪些其他步骤来调试此崩溃?或者有人从我提供的信息中看到我做错了什么?
相关问题:
正如rflobao建议的那样,我在32位exe上使用了64位版本的Dependency Walker.以下是我的分析运行的新输出:
此时,和以前一样,Dependency Walker冻结了.我仍然完全迷失了,并且不觉得我更接近能够确定导致问题的原因.
小智 5
请注意,Dependency Walker具有32位和64位版本.如果您的应用程序是32位,则应使用32位版本.否则,Dependency Walker将看到libs到System32而不是SisWOW64.您的图像显示32位和64位库混合,其中64有错误.
我觉得自己很愚蠢,但我终于弄清楚了真正的问题。我正在使用 SDL 字体库 SDL2_ttf,并且我只是没有将 zlib.dll 从 SDL2_ttf lib 目录复制到我的构建目录中。我不明白为什么错误消息如此神秘;过去,丢失的 DLL 给了我一个有用的“foo.dll 丢失”错误消息。
不管怎样,谢谢大家的帮助。至少我学到了一个有用的教训:在怀疑更复杂的问题之前,始终确保所有必需的 DLL 都存在。
| 归档时间: |
|
| 查看次数: |
737 次 |
| 最近记录: |