2012-12-16 24 views
0

我正在尋找一個缺失的COM接口X,我懷疑它是在Y.dll中定義的。我可以偷看這個假定接口使用爲什麼我不能瀏覽dll以瞭解其中的內容?:「某些組件無法瀏覽」

grep X Y.dll 

它說「匹配」。華友世紀,懷疑證實!

唉,當我在Visual Studio Express中使用對象瀏覽器時,試圖將Y.dll添加到我的自定義組件集中時,彈出窗口中出現錯誤:「某些組件無法瀏覽」。

那麼,我無法瀏覽此DLL的原因是什麼? COM接口是故意還是意外地被保護,隱藏,保護或模糊?顯然我需要一個底漆!

據官方統計,所有微軟知道了,這似乎是普遍缺乏洞察力:

This error generally occurs when you attempt to add a file type that does not support object browsing, such as .htm and .txt files, in the Component Selector dialog box. The Object Browser supports file types such as .bsc, .olb, .tlb, .dll, .exe, and .ocx.

嚴重的是,是什麼一個DLL或EXE不支持瀏覽的原因是什麼?任何指向教程或書籍的指針都會受到初學者的讚賞!謝謝。

回答

1

COM對象瀏覽器依賴於COM服務器(dll,exe,ocx等)的metadata (type libraries) exported

問題是COM服務器不需要導出任何關於它實現的接口的元數據。不幸的是,我發現了很多這樣的服務器(所以需要知道哪些CoClass,接口等被其他方式支持)。

檢查,如果你的COM服務器(y.dll)中含有一種叫 「TYPELIB」 類似資源:

COM typelib resource

希望這有助於。

+0

優秀的反應(但沒有運氣......)。謝謝! –

相關問題