2017-06-14 56 views
0

所有如何包括在其他類型庫中定義的COM接口(或COM服務器DLL)

我的環境: 使用VS C++ 2005,與ATL

我有項目,我想創建和構建2個單獨的COM服務器Dll,並且需要引用項目B中項目A中定義的COM對象的接口。 注意:我需要能夠在IDL級別執行此操作,然後編譯器會生成正確的頭文件等。而我的類型庫是正確的。

下面是一個例子:

項目A:

服務器對象 - > iServer中

項目B

客戶端對象 - > IClient其中已經定義了返回iServer中的方法GetServer()在項目A中

項目A是單獨的COM Dll,並且首先構建。 項目B是項目A中定義獨立的COM DLL和引用接口

是的,我知道,我可以有IClient.GetServer()返回引用服務器對象的IUnknown,然後讓開發商明確將它轉換爲服務器接口,但這很煩人,容易出錯。

+2

你的問題是什麼? – IInspectable

+0

項目B的TypeLibrary需要對項目A的TypeLibrary有一個引用('importlib'指令),然後才能使用在項目A中聲明的接口。 –

+0

問題出現在主題中並在第一段中討論。好的,所以importlib就是我所需要的,我想,在我註冊項目A的類型庫後...我會試試看。 – ActiveX

回答

0

建議使用importlib,但在我的情況下,我需要在我的idl中使用導入。 此外,由於標題位於不同的文件夾中,MIDL將在您的標題中將#include生成包含的頭文件,該標題文件來自您需要在項目屬性中添加include目錄引用的其他項目。