使用 C++ 实现 COM 组件的示例
COM(Component Object Model)是微软提出的用于构建组件化应用程序的标准。COM 允许不同编程语言编写的组件进行互操作。本文将展示如何用 C++ 创建和使用 COM 组件,涵盖接口定义、组件实现、引用计数、对象创建等基本概念。
1. 定义接口
在 COM 编程中,接口是定义组件之间交互的核心部分。所有的 COM 接口都必须继承自 IUnknown
接口,它提供了基本的引用计数和接口查询功能。
下面我们定义一个简单的接口 IHello
,它包含一个方法 Hello
用于打印消息。
// IHello.h
#ifndef IHELLO_H
#define IHELLO_H
#include <objbase.h>
// 定义 IHello 接口
class IHello : public IUnknown {
public:
virtual void Hello() = 0;
};
// 定义 IHello 的 GUID
// {D77A85A0-68F7-4F0C-9B5A-A6D84236A2D1}
DEFINE_GUID(IID_IHello,
0xd77a85a0, 0x68f7, 0x4f0c, 0x9b, 0x5a, 0xa6, 0xd8, 0x42, 0x36, 0xa2, 0xd1);
#endif
在这段代码中,我们定义了一个接口 IHello
,它继承自 IUnknown
并包含一个 Hello
方法。DEFINE_GUID
宏用于生成接口的唯一标识符(GUID),该标识符在 COM 中用于区分不同的接口。