2015-12-21 57 views
1

試圖構建UltraDefrag。如何鏈接需要rsrc部分和comctl32.dll的64位可執行文件?

聽起來相當簡單,但只要將rc.o添加到二進制文件的鏈接對象中,就會使用32位版本的comctl32.dll在程序啓動時觸發0xc0000007錯誤。

這是一個已知的bug mingw64,但錯誤沒有答覆自2011年以來,我需要爲這個一種解決方法(該程序需要不使用cygwin.dll,所以我不能用cygwin)

任何想法?

+0

如果這是一個已知的錯誤,你應該提供一個知道它的位置的鏈接 – jturney

+1

它確實是MinGW-w64工具鏈的一個通用問題,你應該能夠生成一個簡單的測試用例。 – jturney

+0

@jturney:http://permalink.gmane.org/gmane.comp.gnu.mingw.announce/3311 – user2284570

回答

1

即清單包含

<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的錯誤。

+0

OK,還有默認情況下,該項目包括一個清單,確實如此。 – user2284570

+0

當你試着以錯誤的清單您的64位應用程序,你也可能得到錯誤'應用程序無法正常啓動(0xc000007b)。單擊確定關閉application.'和異常'未處理的異常在0x000007F8EE9C1E80(ntdll.dll中)在MyApp.exe中:0xC000007B:%HS要麼沒有設計在Windows上運行,或者它包含一個錯誤。嘗試使用原始安裝介質重新安裝程序,或與系統管理員或軟件供應商聯繫以獲得支持。錯誤狀態0x.' – izogfif

相關問題