饭中淹的避难所~~~~~

偶尔来避难的地方~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  94 随笔 :: 0 文章 :: 257 评论 :: 0 Trackbacks
<2007-04-17>
1- 插件导出函数设计成C形式的也就是在函数前加 extern "C",这样保证动态连接的时候不会出现找不到名字的情况.
2- 一定要保证代码绝缘,中间接口一定要传递NATURAL类型或者纯虚指针,否则会因为一些细微的类版本不同而导致很多很多的运行错误和异常.
3- DLL中分配出来的内存,一定要在DLL内部释放,否则会导致意想不到的情况.
4- 如果不是万分必要不要使用DLL直接导出类,而应该导出纯虚接口.不然使用DEPENDENCE等工具会把你的类结构看的一清二楚.
5- 如非必要,请一定要使用动态连接,也就是LOADLIBRARY, GETPROCADDR的形式,这会增强你软件的友好性.
<2007-04-18 11:05 am>
6- 如果你要提供对象工厂,那么确保你的对象的纯虚接口要有 virtual ~InterfaceClassName(){} 这样的析构函数, 确保在你混乱不堪直接去删除一个接口指针的时候能正确的调用到接口实现的析构.
<未完待续>
posted on 2007-04-17 20:46 饭中淹 阅读(2600) 评论(7)  编辑 收藏 引用

评论

# re: 使用C++编写插件动态链接库需要注意的问题(不断补充)[未登录] 2007-04-18 00:38 eXile
如果是针对C++客户, 那么采用boost::shared_ptr可以大大减轻内存的管理, 不容易产生内存泄露, 也不会有跨模块释放内存的情况.  回复  更多评论
  

# re: 使用C++编写插件动态链接库需要注意的问题(不断补充) 2007-04-18 09:44 winok
请教一下第2条:
" 一定要保证代码绝缘,中间接口一定要传递NATURAL类型或者纯虚指针,否则会因为一些细微的类版本不同而导致很多很多的运行错误和异常."
是什么意思,NATURAL类型是指? 纯虚指针又是指,,若能有个小例子说明,那就太好了,万分感谢了。
  回复  更多评论
  

# re: 使用C++编写插件动态链接库需要注意的问题(不断补充) 2007-04-18 11:02 饭中淹
NATURAL就是编译器支持的原子类型
char, int, long, short, 这些以及他们的无符号版本版本

纯虚指针,就是纯虚函数指针,
比如在插件和主程序的参数传递中使用下面这种纯虚类的指针
class CPureVirtualParam
{
public:
virtual char * GetName() = 0;
virtual int GetAge() = 0;
};

  回复  更多评论
  

# re: 使用C++编写插件动态链接库需要注意的问题(不断补充) 2007-04-18 11:55 winok
谢谢您的好帖了 :)  回复  更多评论
  

# re: 使用C++编写插件动态链接库需要注意的问题(不断补充) 2007-04-18 17:41 梦在天涯
如果不到处类的话,可以只到出类的成员函数吗,或类的纯虚函数吗?  回复  更多评论
  

# re: 使用C++编写插件动态链接库需要注意的问题(不断补充) 2007-04-18 21:56 清源游民
不错,如果展开讨论就更加好了,期待。。。。。  回复  更多评论
  

# re: 使用C++编写插件动态链接库需要注意的问题(不断补充) 2007-04-19 08:39 饭中淹
@梦在天涯
导出成员函数是可以的, 纯虚函数也是可以的, 但是似乎是没有什么作用.

一般我都是为导出类写纯虚接口类.
  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理