基于C++的COM组件创建及DLL封装简单实现
(注:新手非专业,从无到有了解仅用时一天。个人学习笔记,仅供参考。如有错误,欢迎指正。)
一、组件、COM、DLL基本概念及关系
参考资料:
https://www.cnblogs.com/Braveliu/p/3434171.html
COM编程之一 组件
https://www.cnblogs.com/lasthelloworld/p/4958282.html
Com组件和Dll文件区别
1、组件
单个应用程序分隔为多个独立部分,各自称为组件。
2、COM
COM是关于如何建立组件以及如何通过组件构建应用程序的规范。组件架构便于快速应用程序开发。
3、COM组件
COM组件是一组接口的集合,由Win32动态链接库(DLL)或可执行文件(EXE)的形式发布的可执行二进制代码组成。
4、DLL
DLL称为“动态链接库”,又称"应用程序拓展"。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。
5、DLL文件如何发挥作用
DLL中存放各类程序的函数实现过程。当程序需要调用函数时,先载入DLL,然后取得函数的地址,最后进行调用。动态链接,指编译链接可执行文件时,只需要链接引入库,DLL中的函数代码和数据并不会复制到可执行文件。在运行时,再去加载DLL,访问DLL中导出的函数。
6、DLL的优点
避免暴露源代码;减少重复加载;模块化;等等。
7、COM、COM组件、DLL之间的关系
DLL是包含函数和数据模块的集合。COM是规范,以该规范实现的DLL可视为COM组件。COM组件接口实现是统一的虚拟函数表(VTBL)形式,其包含组件函数的一组指针,由此可获取想要通信的组件函数的内存地址。
二、COM组件的创建及DLL封装
参考资料:
https://blog.csdn.net/LittleLittleFish_xyg/article/details/80988159
c++编写COM组件,并使用该组件
https://www.bilibili.com/video/BV1hE411D7F2
COM 组件的创建
https://blog.csdn.net/bytxl/article/details/46313581
理解 __declspec(dllexport)和__declspec(dllimport)
https://blog.csdn.net/little_bobo/article/details/55100660
如何编译生成dll文件以及如何调用dll文件
1、新建项目(DLL型)
新建一个Win32控制台应用程序,项目名为DLL,并在设置时将应用程序类型修改为“DLL”。
2、DLL.h中声明变量和函数(以两整数相加为例)
头文件是C++的接口文件,不仅本工程需要使用头文件来进行编译,给其他工程提供dll的时候也要提供此dll的头文件才能让其他人通过编程的方式来使用dll。头文件中声明了方法。
在DDL.h头文件中,声明了两个整型变量aa和bb以及加法函数Add():
extern "C" DLL_API int aa;
extern "C" DLL_API int bb