我在这里发布这个问题是因为我在尝试找到答案时遇到了很多麻烦 - 特别是,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文件夹中的版本。
答案 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位版本创建单独的清单。