iba*_*nez 5 c++ dll 64-bit wow64 binary-compatibility
我最初使用VC9.0在win7 32位上设计了一个win32应用程序.我最近升级到win7 64位,并尝试构建+执行以前的应用程序.
构建运行正常(win32应用程序),但在运行时我得到错误"[...]退出代码-1073741701(0xc000007b)."
我想这是加载64位版本[预期] 32位dll的结果.
此项目的特定依赖项是:SDL.lib SDLmain.lib SDL_ttf.lib opengl32.lib glu32.lib wininet.lib
SDL和SDL_ttf仅为32位版本.我假设Visual Studio足够聪明,可以在我请求win32应用程序时获取\ syswow64中的opengl和glu lib文件.
可能是因为wininet?或者我犯了错误?
谢谢,
您似乎正在将64位DLL加载到32位进程中,反之亦然.以下是我将如何跟踪有问题的DLL.
第一步是在可执行文件上运行dumpbin.exe(使用VS命令提示符在PATH上获取它),以确保架构符合您的期望:dumpbin.exe /headers foo.exe
.在文件头输出中,您应该看到"机器"值为"x86"或"x64".在可选的标题输出中,您应该看到"PE32"(对于x86)或"PE32 +"(对于x64)的魔力.
下一步是运行适当的依赖性walker,可在www.dependencywalker.com上获得,具体取决于可执行文件的体系结构(x86或x64).此工具应告诉您它是否找到不属于同一体系结构的搜索路径的依赖项.
如果依赖者walker发现问题,则修复将是使用相同体系结构的库替换违规库,或者确保在基于搜索路径的错误库之前找到正确的库.