【问题标题】:Launching application fails with error code 0xc000007b after upgrading 32-bit project to 64-bit将 32 位项目升级到 64 位后,启动应用程序失败并显示错误代码 0xc000007b
【发布时间】:2013-08-13 05:19:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    在使用清单来启用通用控件的视觉样式时,您一定不要忘记升级 x64 项目的清单文件。监督这个问题很容易,因为您可能只创建一次清单文件,然后再也不会碰它。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-19
      • 2012-02-02
      • 1970-01-01
      • 2010-12-18
      • 2013-09-19
      • 1970-01-01
      相关资源
      最近更新 更多