2011-12-05 45 views
3

我目前生活在90年代,並且我已經遞交了這段遺留代碼。當我談到COM/OLE/MFC/ATL時,我並不是很瞭解所以我問這個問題,希望那些有經驗的人能夠幫助我追蹤這個問題。COM/OLE,舊代碼和頭痛

  • 我所擁有的是這個非常舊的/傳統的MFC/ATL應用程序。
  • 它啓動,但最終還是在的CFormView :: HandleInitDialog(atlmfc的\ src \ MFC \ viewform.cpp)

調試輸出我得到的是這樣的崩潰:

CoCreateInstance of OLE control {6A24B340-7634-11D3-A5B0-0050044A7E1A} failed. 
>>> Result code: 0x80040154 
>>> Is the control is properly registered? 

我知道盡可能多這是由於一些組件註冊失敗或解決方案,但我不知道如何找出這種依賴關係是什麼,我有一箇舊的可執行代碼,也許我可以使用一些反向工程來計算如果有任何DLL丟失,但我真的不知道,我知道OLE是什麼,我真的很感激一些幫助,如何調試這個。

+0

爲了幫助人誰得到了類似的問題,我有這樣的碰撞,我點擊了'ocx'這是越來越卸載,Dependency Walker中打開。它表明'ocx'無法打開某個特定的dll,當我放入正確的路徑時,該程序不會崩潰。 – Nav

回答

4

看起來像是dxDBGrid.dll。 OLE只是對象鏈接和嵌入。您需要找到dxDBGrid.dll並確保它已註冊。你可以使用regsvr32來註冊它。

explanation of regsvr32

+1

也可能被他的病毒掃描器阻止。 –

+0

你可以搜索註冊表...如果文件正在從一個硬編碼的文件路徑加載,該文件可能不是你期望的地方...(即程序文件與程序文件(x86)) –

+0

這可能會非常很多情況下,但你知道這是dxDBGrid,而不是其他組件,在我得到的所有DLL中,我想知道哪些包含了什麼。就像我說的那樣,它是遺留代碼,我還沒有完全理解所有東西......是不是他們自己去弄清楚某個特定DLL中包含的GUID? –