我有一個ATL COM服務,可以通過我的Windows窗體應用程序.NET4應用程序連接到大多數託管C++應用程序。非託管C++ COM和託管C++ .NET4互操作
我可以成功檢索指向接口的指針(通過CoCreateInstance()),但在嘗試實現事件接收器時遇到問題。我希望在應用程序中創建一個非託管的C++類,該類實現由COM服務器定義的接口,並從ConnectionPoint接收事件。我到目前爲止:
- 意識到這是不可能的使用託管(ref class)C++類,我正在使用一個正常的非託管類。
- 不能使用任何ATL宏,我需要在接收器類中實現IUnknown抽象函數(AddRef,Release,QueryInterface等)。
我可以檢索接口的IConnectionPoint指針,但對Advise()的調用返回E_NOTIMPL。這使我相信我錯過了在某處實現某些ATL基本功能,但我不知道從哪裏開始。另外,我在網上發現了很少有關在託管C++項目中使用COM的資源。最近我來到是this文章。有人對這個主題有什麼好的看法嗎?它現在正在破壞我的大腦。
感謝您的回覆。你是對的,我混淆了混合託管和非託管代碼。 「添加參考」選項在哪裏存在?你有沒有鏈接到這種方法的文檔? – 2011-05-04 04:49:35
只需右鍵單擊該項目,即可看到添加參考。它將打開一個對話框,其中將顯示「COM」選項卡,打開該選項卡,您將看到系統上所有已註冊的COM組件。基本上這只是Tlbimp.exe之上的IDE功能。這是用於爲COM創建託管包裝的工具。請參閱:http://msdn.microsoft.com/en-us/library/tt0cf3sx(VS.80).aspx – Ankur 2011-05-04 05:41:34