用visual c++实现COM对象的声明/定义和实例化

declaration/definition and instantiation of COM objects with visual c++?

本文关键字:声明 定义 实例化 对象 visual c++ 实现 COM      更新时间:2023-10-16

我需要实例化com对象,它是.dll,并且在visual c++中的本地机器上,我知道它可以通过使用CoCreateInstance("clsid")来完成,但我对声明感到困惑。所以有人能解释所有涉及的步骤吗?用于后期结合以及早期结合

  1. 是否需要任何导入/包含
  2. 如何声明com对象
  3. createinstance之前需要的任何其他步骤(例如CoInitialize?)

或提供任何涉及逐步代码的特定参考

首先必须调用CoInitialize,如果初始化成功,不要忘记调用CoUnitialize

因此,您的代码将具有以下结构:

HRESULT hr = CoInitialize(NULL); 
if (SUCCEEDED(hr))
{
    try
    {
        CoCreateInstance(...)
        // ...
    }
    catch (_com_error &e)
    {
        //...
    }
    CoUninitialize();
}

有关详细信息,请访问MSDN。我建议您先从COM库开始,然后在使用CoInitialize和CoCreateInstance函数之前,应该先阅读一些关于它们的内容。

本教程也可以帮助您:COM简介-它是什么以及如何使用它。

  1. 非常推荐#import。如果您使用#import导入typelib,那么您将使用Native COM框架,它隔离了一些粗糙的细节,使生活总体上更轻松。

  2. 在Native COM中,类似于以下内容:

    库名称::IMyInterface Ptr pInterface;

在原始C++中:

IMyInterface *pInterface;

但请参阅上文。

  1. 在程序开始时调用CoInitialize(),在程序结束时调用CoUninitialize()。如果在DLL中运行,那么它要复杂得多