1
我試圖通過.TLB導出自動化兼容接口的庫。具有構造函數的OLE自動化對象的初始對象引用
TLB在接口內列出function
s以檢索對象引用; .TLH將這些作爲非靜態成員函數,這使我很難在沒有對象引用的情況下調用它們;因此,我在這裏遇到了一些雞與雞的問題。
從C++調用function
s的正確方法是什麼?
我試圖通過.TLB導出自動化兼容接口的庫。具有構造函數的OLE自動化對象的初始對象引用
TLB在接口內列出function
s以檢索對象引用; .TLH將這些作爲非靜態成員函數,這使我很難在沒有對象引用的情況下調用它們;因此,我在這裏遇到了一些雞與雞的問題。
從C++調用function
s的正確方法是什麼?
在.tlb文件上使用#import
,然後使用CreateInstance()
方法將適當的智能指針類型實例化爲對象,然後調用成員函數。
像這樣的東西(省略處理錯誤):
#import ThatTlbFile.tlb
//at some point in your code you have to init COM
CoInitialize(0);
// once COM is initialized
IInterfaceOfInterestPtr object;
// this will ask COM to instantiate an object
object.CreateInstance(__uuidof(ComClassOfInterest));
object->CallMethod();
不太什麼,我一直在尋找(我知道這一點),但顯然我的假設,這個函數是一個構造函數犯了一個錯誤 - - 而是,我所看到的界面有一個打開相關對象的方法,由於沒有註冊類實現接口,我假設這些是ctor函數。我已經找到了與組件對話的根對象,它已註冊並且具有我需要的對象的工廠方法。 –