x64 系统上的 win32 应用程序编译 0K 时出现运行时错误(dll 加载)

2023-12-02

我最初在win7 32位上设计了一个win32应用程序,使用VC9.0。 我最近升级到win7 64位,并尝试构建+执行以前的应用程序。

构建运行良好(win32 应用程序),但在运行时我收到错误“[...] 已退出,代码为 -1073741701 (0xc000007b)。”

我猜这是加载[预期] 32 位 dll 的 64 位版本的结果。

该项目的具体依赖项是: SDL库 SDLmain.lib SDL_ttf.lib opengl32.lib glu32库 wininet.lib

SDL 和 SDL_ttf 仅提供 32 位版本。 我假设 Visual Studio 足够聪明,可以在我请求 win32 应用程序时获取 \syswow64 中的 opengl 和 glu lib 文件。

难道是wininet的原因?或者我犯了一个错误?

Thanks,


看来您正在将 64 位 DLL 加载到 32 位进程中,反之亦然。以下是我如何追踪有问题的 DLL。

第一步是在可执行文件上运行 dumpbin.exe(使用 VS 命令提示符将其放在 PATH 上),以确保架构符合您的预期:dumpbin.exe /headers foo.exe。在文件头输出中,您应该看到“machine”值“x86”或“x64”。在可选的标头输出中,您应该看到“PE32”(对于 x86)或“PE32+”(对于 x64)的魔力。

下一步是运行适当的依赖项遍历器,可在www.dependencywalker.com,取决于可执行文件的体系结构(x86 或 x64)。该工具应该告诉您它是否找到了对不属于同一体系结构的搜索路径的依赖项。

如果依赖关系遍历器发现问题,则修复方法是用相同架构的库替换有问题的库,或者确保根据搜索路径将正确的库定位在错误的库之前。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

x64 系统上的 win32 应用程序编译 0K 时出现运行时错误(dll 加载) 的相关文章

随机推荐