将32位项目升级到64位后,启动应用程序失败,错误代码为0xc000007b

时间:2013-08-11 23:38:08

标签: windows visual-studio visual-c++ 32bit-64bit

我在这里发布这个问题是因为我在尝试找到答案时遇到了很多麻烦 - 特别是,StackOverflow上的所有答案都没有解决问题。

我最近升级了我的Visual Studio 2010 32位项目,以便为x64编译。编译没有问题,但在尝试启动应用程序时,它失败,错误代码为0xc000007b。通常,当您忘记将包含的DLL从32位升级到64位并因此尝试在64位应用程序中加载32位代码时会发生这种情况,但在这种特殊情况下,我只包含随Windows一起提供的DLL,因此无论如何,WOW应该选择正确的DLL版本......理论上。

ProcMon表示所有DLL都是从C:\ Windows \ System32加载的,这是64位插件的正确位置。使用this StackOverflow thread中建议的Dependency Walker也没有任何帮助,因为它认为所有引用的DLL都是32位,可能是因为DW本身是一个32位应用程序,所以当它要求例如user32.dll,Windows将选择驻留在SysWOW64文件夹中的版本。

1 个答案:

答案 0 :(得分:3)

使用清单在常用控件上启用视觉样式时,不要忘记升级x64项目的清单文件。监控此问题很容易,因为您可能只创建一次清单文件,然后再不再触摸它。

您的清单文件可能包含以下部分:

<assemblyIdentity
     type="win32"
     name="Microsoft.Windows.Common-Controls"
     version="6.0.0.0"
     publicKeyToken="6595b64144ccf1df"
     language="*"
     processorArchitecture="x86"/>

这使Windows搜索32位版本的常用控件。要解决此问题,您必须在"x86"之前替换清单文件中的{strong>所有 "amd64",或简单地"*"(以使其适用于所有问题)平台)。如果您没有使用"*"版本,请不要忘记为项目的64位版本创建单独的清单。