我需要在visual C++中實例化com對象,它是.dll和本地機器上的,我知道它可以通過使用CoCreateInstance(「clsid」)來完成,但我對於declaration.so感到困惑,任何人都可以解釋涉及的所有步驟? 後期綁定和早期綁定用visual C++聲明/定義和實例化COM對象?
- 是任何進口/包所需
- 如何聲明COM對象?
- 的CreateInstance之前所需的任何其他步驟(例如CoInitialize的?)
或提供一步代碼
我需要在visual C++中實例化com對象,它是.dll和本地機器上的,我知道它可以通過使用CoCreateInstance(「clsid」)來完成,但我對於declaration.so感到困惑,任何人都可以解釋涉及的所有步驟? 後期綁定和早期綁定用visual C++聲明/定義和實例化COM對象?
或提供一步代碼
首先涉及的步驟你必須調用CoInitialize
,不要忘了具體提到,如果初始化調用CoUnitialize
那是成功的。
所以,你的代碼將具有以下結構:
HRESULT hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
try
{
CoCreateInstance(...)
// ...
}
catch (_com_error &e)
{
//...
}
CoUninitialize();
}
欲瞭解更多信息,請訪問MSDN。我建議您從The COM Library開始,然後在使用它們之前閱讀有關CoInitialize和CoCreateInstance函數的內容。
本教程也可以幫助您:Introduction to COM - What It Is and How to Use It。
#import
是非常建議。如果使用#import導入typelib,則將使用Native COM框架,該框架隔離了一些堅韌的細節,使生活通常更加簡單。
在Native COM,這樣的事情:
LIBNAME :: IMyInterfacePtr pInterface;
在原始C++:
IMyInterface *pInterface;
但是見上文。
感謝LihO和Seva你們的回答都很有幫助,兩者都顯示了兩種不同的方式,#import更有效率,但是我找不到一個object的typelib,我很困惑我應該接受哪個回答是正確的。 – user1176743 2012-02-02 07:10:20