2010-08-11 48 views
1

我注意到MIDL.exe只爲C/C++生成頭文件(_h.h)和GUID文件( _i.c)。這有助於在C/C++中創建COM。如何在C/C++以外的語言中創建COM?

如果我想在VB或其他語言中創建COM,該怎麼辦? IMO,我必須先用MIDL語言定義接口,然後用MIDL.exe編譯它。那麼其他語言怎麼能利用MIDL.exe的輸出呢?

非常感謝。

回答

3

像VB6和.NET這樣的運行環境將COM視爲一等公民,並且不需要midl.exe提供的管道。 VB6類自動是一個實現IDispatch的COM類。 .NET具有像[ComVisible]這樣的屬性。他們的運行時環境實現了所需的粘合

在C++中沒有這樣的粘連,你必須自己寫。或者利用像ATL這樣的類庫。然而,它確實可以超越oleauto的限制,就像實現從IUnknown派生並創建定製編組器的接口一樣。

+0

感謝漢斯。 8^d – smwikipedia 2010-08-15 02:57:35

0

如果您想在VB.NET中編寫COM組件,您將不會在MIDL中定義接口。相反,您將以通常的.NET方式編寫託管界面和實現它的類。然後,您創建類和接口ComVisible,並安排項目爲生成的程序集創建Com Callable Wrappers。

請記住,您以這種方式創建的內容將依賴於.NET Framework。

+0

謝謝凱特。我不熟悉VB。但似乎VB節省了我們很多努力。 – smwikipedia 2010-08-15 02:59:04