COM 组件技术(三)

1993年Microsoft公布了COM技术,随后推出了COM SDK作为Windows SDK的一个组成部分内置在操作系统中,供开发者使用。为简化COM编程,提高开发效率,又在1995年推出了ATL框架,并于1998年将ATL集成到Visual C++开发环境中,成为Microsoft标准开发工具中的一个重要成员。

前面两篇博客,正是利用COM SDK中的API,直接写的COM组件,虽然很灵活,但是如果组件变多了,就要写很多重复的代码,极易出错。因此本篇博客讲解如何使用visual studio 2015提供的ATL项目模板,快速完成COM组件开发。(使用不同版本的vs,步骤大同小异,可适当灵活处理)。

组件生成后,可编写简单客户端进行测试:

cpp 复制代码
#include <iostream>
#include "ATLDemo01_i.h"

HRESULT com_dll_reference()
{
    //CoInitialize(NULL);
    IXXTerm* pComTest = NULL;
    HRESULT hResult = 0;
    if (hResult == ERROR_SUCCESS)
    {
        hResult = CoCreateInstance(__uuidof(XXTerm), NULL, CLSCTX_INPROC_SERVER, IID_IUnknown, (void**)&pComTest);
    }
    if (S_OK == hResult)
    {
        IXXTerm* pInner1 = NULL;
        long lVal = 0;
        hResult = pComTest->QueryInterface(__uuidof(IXXTerm), (void**)&pInner1);
        system("pause");
        pInner1->GetStatus(&lVal);
        hResult = pInner1->Release();
        hResult = pComTest->Release();
    }
    //CoUninitialize();
    return hResult;
}

int main()
{
    CoInitialize(NULL);
    com_dll_reference();
    CoUninitialize();
    return 0;
}

项目资源详情请见https://download.csdn.net/download/yuanshenqiang/93691134

相关推荐
FlightYe7 小时前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
by209998 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble8 小时前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长8 小时前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall9 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊9 小时前
C++算法 滑动窗口篇(下)
开发语言·c++
共享家952710 小时前
408 操作系统第一章
服务器·数据库·windows
Sakura_j_h_11 小时前
GitHub Actions 打包 Windows exe:中文编码与产物上传
windows·ci/cd·打包发布·github·pyinstaller·github actions
你怎么知道我是队长12 小时前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
青少儿编程课堂13 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛