电 子 科 技 大 学实 验 报 告学生姓名: 学 号: 指导老师:李林实验地点:清水河主楼 A2—412 实验时间: 一、实验室名称:Linux 环境高级编程实验室二、实验项目名称:插件框架实验三、实验学时:4 学时四、实验目的:实践 Linux 环境下插件框架的开发
学习并掌握插件的工作原理
五、实验内容: 1、使用动态链接库实现打印功能开发一个程序,向屏幕打印“Hello World";在不重新编译链接原程序的前提下,将打印的文字改为“Hello China”
2、使用动态链接库实现自定义打印功能同时要打印“Hello World",打印“Hello China”,甚至同时打印未来才会增加的其他打印信息
打印未来的这些信息,也不能重新编译链接原程序
3、一次只调用一种功能通过命令行方式:
out help,输出所有插件实现的功能 ID,以及该功能 ID 对应的功能描述(参考代码 3)通过命令行方式:
out FuncID,调用具体打印功能(每个插件导出 GetID 接口)(参考代码 4) 4、导出函数都放在一个类中在版本 3 中,插件导出了 Print、GetID、Help 三个函数,主程序需要使用多个容器分别保存这些函数地址
在复杂的业务逻辑中,导出的函数可能更多,若还根据版本 3 的方式,代码维护性不佳
将三个导出函数都放在一个类中,让插件外部猎取该类的对象六、实验步骤:版本 1程序代码如图 1
3 所示(程序是在 Linux 图形界面截取的,本人的 Ubuntu 在字符界面无法显示中文注释):图 1
1 功能函数图 1
2 hello world 函数图 1
3 主函数首先,使用命令#g++ —fpic –shared –o function
so helloworld
cpp function