实现目的,往Qt插件CorePlugin中加入新的类 HConnectionManager。
直接在代码中加入会遇到如下问题:
(1)创建了类之后,在cpp文件中加入类的构造和析构函数后,报错:"无法加入coreplugin.so" 重新编译之后仍然出现这种问题,程序无法编译通过。
问题分析:coreplugin插件代码修改之后,未能重新单独执行qmake生成新的coreplugin.so
解决方法:右键点击项目中插件coreplugin所在文件夹,在出现的菜单中选择“执行qmake”。之后就会更新coreplugin.so,问题解决。
(2)出现问题二:"OpenPilotlibCore.so: undefined symbol _ZN16UAVObjectManager16staticMetaObjectE"
问题分析:插件coreplugin中调用了插件uavobject中声明的类uavobjectManager,但是没有在coreplugin插件的pro文件中声明。
解决方法:在coreplugin中声明调用uavobjects插件中的内容,在coreplugin.pro文件中加入: include(../../plugins/uavobjects/uavobjects.pri)。
重新编译,问题解决。
(.so文件是linux系统下的动态链接库文件,对应windows系统下的dll文件,qt插件化中每个插件会独立qmake生成对应的so文件供主程序调用。)