簡體   English   中英

將32位項目升級到64位后,啟動應用程序失敗,錯誤代碼0xc000007b

[英]Launching application fails with error code 0xc000007b after upgrading 32-bit project to 64-bit

我在此發布此問題是因為在嘗試找到答案時遇到了很多麻煩-特別是,StackOverflow上的所有答案都無法解決問題。

最近,我已經升級了Visual Studio 2010 32位項目,也可以針對x64進行編譯。 編譯可以正常進行,但是嘗試啟動應用程序時,編譯失敗,錯誤代碼為0xc000007b。 通常,當您忘記將隨附的DLL從32位升級到64位,並因此嘗試在64位應用程序中加載32位代碼時,會發生這種情況,但是在這種特殊情況下,我只包含Windows附帶的DLL,因此從理論上講,WOW應該選擇正確的DLL版本。

ProcMon指示所有DLL是從C:\\ Windows \\ System32加載的,這是64位插件的正確位置。 按照此StackOverflow線程的建議使用Dependency Walker也沒有幫助,因為它認為所有引用的DLL都是32位的,這可能是因為DW本身是32位的應用程序,因此,當它詢問例如user32.dll時,Windows將選擇SysWOW64文件夾中的版本。

使用清單在常用控件上啟用視覺樣式時,一定不要忘記為x64項目升級清單文件。 監視此問題很容易,因為您可能只創建清單文件一次,然后再也不會碰它。

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

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

這使Windows搜索公共控件的32位版本。 要解決此問題,您必須將清單文件中所有出現"x86"替換為"amd64"或簡單地替換為"*" (以使其在所有平台上都可以使用)。 如果不使用"*"版本,請不要忘記為項目的64位版本創建單獨的清單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM