linux调用ocx插件_linux下用c++实现动态链接库插件

对于像调度系统这样一类系统而言,为了保持其自身的稳定和简单,一般会用外挂任务的方式来实现的。外挂任务可能有多种方式,有像上篇说的用子进程的方式来实现的,也可以使用混合编程来实现。当然,如果大家都是用c/c++进行开发的话,还可以有另外一种方式,那就是使用动态链接库作为插件了。为什么使用动态链接库动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。不同的应用程序如果调用相同的库,那...
摘要由CSDN通过智能技术生成

对于像调度系统这样一类系统而言,为了保持其自身的稳定和简单,一般会用外挂任务的方式来实现的。外挂任务可能有多种方式,有像上篇说的用子进程的方式来实现的,也可以使用混合编程来实现。当然,如果大家都是用c/c++进行开发的话,还可以有另外一种方式,那就是使用动态链接库作为插件了。

为什么使用动态链接库

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规避了空间浪费问题。动态库在程序运行是才被载入,因此,用户只需要更新动态库即可增量更新。这就带来了一个好处,就是重新发布so并不需要重新编译进程,这里也就是我们的调度系统了。如何生成动态链接库

在linux系统下面,动态链接库的生成比较简单,如果使用g++进行编译的话,只需要加上 -fPIC 和 -shared 两个选项即可。当然,如果使用的是cmake或者scons之类的编译系统的话,就需要自行查找下相关的手册了。

用c++编写动态链接库的坑

Name Mangling。虽然说c++继承自c,但是c++为了支持重载、支持类、命名空间等特性,满足不同的类的成员函数可以使用相同的函数名、不同的类可以有相同名字的成员变量等,引入了Name Mangling。Name Mangling说白了就是对名字进行重新编码的一种规则,经过处理之后,原本一个名为VideoFrameHandleService的函数就变成了 _ZN17dayu_video_effect23VideoFrameHandleServ

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值