我希望在我的C++庫中使用COM DLL。 我想通打算約它的方式,是#IMPORT DLL的.tlb文件,我做到了:如何在我的C++程序中使用COM DLL
#import "mycom.tlb" no_namespace
的問題是,我不太知道從哪裏把這個聲明。它應該在H文件還是CPP文件中?或者可能是stdafx.h文件? 我試着將它放在.cpp文件中,僅用於測試。
在我有這個成員聲明的.h文件:
ILogicSecuredPtr m_pbLogic;
(其中ILogicSecured是我想在我的COM DLL一起工作的接口)
然後我說這在構造函數中實例化接口:
CoInitialize(NULL);
m_pbLogic(__uuidof(LogicSecured));
(其中LogicSecured是實現接口的對象的名稱)
在析構函數中我加:
CoUninitialize();
這不會然而編譯,無論身在何處我試着放置#進口報關。 它只是不識別ILogicSecured對象。 我得到的.h文件這個錯誤:
Error 2 error C2146: syntax error : missing ';' before identifier 'm_pbLogic'
我還要提到的是,當我F12(在Visual Studio)在ILogicSecuredPtr聲明,它帶我到TLH文件就好了。所以我知道它承認它。
我在這裏做錯了什麼?
非常感謝。 Roey
我可以加粗一點情節嗎? 如果我嘗試將#import添加到stdafx.h文件中,則 m_pbLogic(__ uuidof(LogicSecured)); 一段代碼不能編譯,說 錯誤18錯誤C2064:術語不計算爲一個函數帶1個參數 – Roey 2010-03-04 08:11:38
這是正確的 - 您嘗試調用構造函數體內的成員變量構造函數 - 這是不允許的。您應該使用IWhateverPtr的CreateInstance()方法。 – sharptooth 2010-03-04 08:13:00
感謝您的快速回復。 你能提供一個模擬的例子來說明如何在我的情況下調用CreateInstance嗎?以及放置在哪裏? 謝謝 – Roey 2010-03-04 08:51:16