C++编写动态插件应注意的问题
发布日期:2021-10-03 22:59:41 浏览次数:10 分类:技术文章

本文共 777 字,大约阅读时间需要 2 分钟。

C++编写动态插件应注意的问题  

2012-02-13 11:30:32|  分类: |字号 

1- 插件导出函数设计成C形式的也就是在函数前加 extern "C",这样保证动态连接的时候不会出现找不到名字的情况.

 2- 一定要保证代码绝缘,中间接口一定要传递NATURAL类型或者纯虚指针,否则会因为一些细微的类版本不同而导致很多很多的运行错误和异常.

NATURAL就是编译器支持的原子类型 char, int, long, short, 这些以及他们的无符号版本版本 纯虚指针,就是纯虚函数指针, 比如在插件和主程序的参数传递中使用下面这种纯虚类的指针

 class CPureVirtualParam

 {

public:

virtual char * GetName() = 0;

virtual int GetAge() = 0;

 };

3- DLL中分配出来的内存,一定要在DLL内部释放,否则会导致意想不到的情况.

 4- 如果不是万分必要不要使用DLL直接导出类,而应该导出纯虚接口.不然使用DEPENDENCE等工具会把你的类结构看的一清二楚. 导出成员函数是可以的, 纯虚函数也是可以的, 但是似乎是没有什么作用. 一般我都是为导出类写纯虚接口类.

 5- 如非必要,请一定要使用动态连接,也就是LOADLIBRARY, GETPROCADDR的形式,这会增强你软件的友好性.

 6- 如果你要提供对象工厂,那么确保你的对象的纯虚接口要有 virtual ~InterfaceClassName(){} 这样的析构函数, 确保在你混乱不堪直接去删除一个接口指针的时候能正确的调用到接口实现的析构.

 7-如果是针对C++客户, 那么采用boost::shared_ptr可以大大减轻内存的管理, 不容易产生内存泄露, 也不会有跨模块释放内存的情况.

转载地址:https://blog.csdn.net/lclflash/article/details/8856882 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:POCO Universal Plug and Play
下一篇:C++ 插件框架 Pluma Framework

发表评论

最新留言

不错!
[***.144.177.141]2023年02月27日 02时38分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

最新文章

MyBatis入门_下 2019-12-08 11:36:32
JavaScript快速入门-基础 2019-12-08 11:36:33
随机点名DEMO 2019-12-08 11:36:33
JQuery快速入门小结 2019-12-08 11:36:33
AJax局部更新技术快速入门 2019-12-08 11:36:33
VUE和ElementUI基础入门 2019-12-08 11:36:33
安卓下xml的三种解析方法 2019-12-08 11:36:31
URL解析以及URL和URI的区别 2019-12-08 11:36:31
JDBC-快速入门 2019-12-08 11:36:32
JDBC-初识 2019-12-08 11:36:32
MyBatis入门-上 2019-12-08 11:36:32
MyBatis入门-中 2019-12-08 11:36:32
jstl 的<c:if>标签没有else的解决办法 2019-12-08 11:36:30
properties中文编码错误问题 2019-12-08 11:36:30
Java中Date和Timestamp的区别 2019-12-08 11:36:30
mysql中的TimeStamp 2019-12-08 11:36:30
java中DateFormat格式输出Date 2019-12-08 11:36:30
java 中直接读写properties文件 2019-12-08 11:36:31
windows下配置python环境变量 2019-12-08 11:36:31
为什么有的类的start方法里会判断是否有读写锁? 2019-12-08 11:36:27