C++插件管理器
2015-08-28 17:16
507 查看
插件管理器实现原理:
1. 加载dll
插件管理器加载dll -----------》 dll包含有若干类 ,每个类实现一个统一结构Create()函数,该函数返回该类的一个实例 -----》每个dll有一个
统一的入口初始化函数Init(),该函数将该dll中的类名与类中的Create()函数地址组合成映射表Map注册到插件管理器中
2. 实现公有接口
所有插件中要导出类都要继承该接口,以便通过该接口调用对应类的方法(visual 函数)
3. 通过类名实例对象
插件管理器通过类名查找Map,找到对应该类的Create()函数地址 ------》 调用该函数返回类的实例对象地址,如:Interface *It = (Interface *)( Create())
-------》通过it接口即可调用类中的方法
1. 加载dll
插件管理器加载dll -----------》 dll包含有若干类 ,每个类实现一个统一结构Create()函数,该函数返回该类的一个实例 -----》每个dll有一个
统一的入口初始化函数Init(),该函数将该dll中的类名与类中的Create()函数地址组合成映射表Map注册到插件管理器中
2. 实现公有接口
所有插件中要导出类都要继承该接口,以便通过该接口调用对应类的方法(visual 函数)
3. 通过类名实例对象
插件管理器通过类名查找Map,找到对应该类的Create()函数地址 ------》 调用该函数返回类的实例对象地址,如:Interface *It = (Interface *)( Create())
-------》通过it接口即可调用类中的方法
相关文章推荐
- 对比C语言中getc()函数和ungetc()函数的使用
- 指针与引用(C++)
- 指针与引用(C++)
- LeetCode:Power of Two
- c语言之无符号/有符号数加减法运算
- C语言中设置用户识别码的相关函数的简单讲解
- C# vs C++ Performance
- C++ vs C#: Performance
- C++快速排序
- C语言获取系统时间的几种方式 !
- C++中#ifndef#define#endif的用法
- LeetCode-Ugly Number-解题报告
- 《IOS_C语言--进制,C数据类型、常量、变量、运算符、表达式、格式化输入输出》
- C/C++_中NULL与空字符串的区别
- C++ bitset类的使用与简介
- Item 17:在单独的语句中将new的对象放入智能指针 Effective C++笔记
- QML基础——在C++程序中使用QML
- C语言中操作utmp文件的相关函数用法
- 浅析为什么char类型的范围是 —128~+127
- [leetcode]Contains Duplicate II C语言