COM接口指针如何工作?

时间:2017-07-12 05:46:41

标签: c++ com

我是COM编程的新手,几年前正在阅读其他代码。我得到了令人费解的东西。 头文件中声明了一些接口poiters。例如,m_pPhone以黄色突出显示。

enter image description here

声明后,m_pPhone似乎没有得到任何值或赋值或初始化。 enter image description here

但它用于获取m_pPhone-> PhoneMode值。价值来自哪里?该项目编译为DLL。我没有在项目属性中找到任何包含的lib。该平台是Windows 7.

enter image description here

补充:VS2010提示消息显示定义,但是通过F12或通过findstr CMD,无法找到它。 enter image description here

1 个答案:

答案 0 :(得分:0)

m_Phone是由#import生成的编译器COM智能指针。该指令将在构建时创建构建文件夹中的一些.h文件,然后这些文件将编译到您的项目中,请参阅Header Files Created by Import

通常通过调用CreateInstance将值分配给智能指针,但也可以通过其他方式(例如,通过COM智能分配方法返回或甚至QueryInterface调用)来分配值。你必须时刻记住,这里发生的实际操作是COM并遵循COM规则,编译器支持只是隐藏它并使它看起来像普通的C ++语法。