試圖構建UltraDefrag。如何鏈接需要rsrc部分和comctl32.dll的64位可執行文件?
聽起來相當簡單,但只要將rc.o添加到二進制文件的鏈接對象中,就會使用32位版本的comctl32.dll在程序啓動時觸發0xc0000007錯誤。
這是一個已知的bug mingw64,但錯誤沒有答覆自2011年以來,我需要爲這個一種解決方法(該程序需要不使用cygwin.dll,所以我不能用cygwin)。
任何想法?
試圖構建UltraDefrag。如何鏈接需要rsrc部分和comctl32.dll的64位可執行文件?
聽起來相當簡單,但只要將rc.o添加到二進制文件的鏈接對象中,就會使用32位版本的comctl32.dll在程序啓動時觸發0xc0000007錯誤。
這是一個已知的bug mingw64,但錯誤沒有答覆自2011年以來,我需要爲這個一種解決方法(該程序需要不使用cygwin.dll,所以我不能用cygwin)。
任何想法?
即清單包含
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
這可能發生,如果application manifest明確規定了通用控件
的32位版本,您需要將ProcessorArchitecture用於更改爲:
processorArchitecture="*"
如果這是你問題的原因,這不是MinGW-w64的錯誤。
OK,還有默認情況下,該項目包括一個清單,確實如此。 – user2284570
當你試着以錯誤的清單您的64位應用程序,你也可能得到錯誤'應用程序無法正常啓動(0xc000007b)。單擊確定關閉application.'和異常'未處理的異常在0x000007F8EE9C1E80(ntdll.dll中)在MyApp.exe中:0xC000007B:%HS要麼沒有設計在Windows上運行,或者它包含一個錯誤。嘗試使用原始安裝介質重新安裝程序,或與系統管理員或軟件供應商聯繫以獲得支持。錯誤狀態0x.' – izogfif
如果這是一個已知的錯誤,你應該提供一個知道它的位置的鏈接 – jturney
它確實是MinGW-w64工具鏈的一個通用問題,你應該能夠生成一個簡單的測試用例。 – jturney
@jturney:http://permalink.gmane.org/gmane.comp.gnu.mingw.announce/3311 – user2284570