错误访问另一个插件中的类(错误:未定义的引用)

Error accessing a class in another plugin (error: undefined reference)

本文关键字:错误 未定义 引用 插件 访问 另一个      更新时间:2023-10-16

我正在尝试访问类, MyExternalClass 在另一个插件中:

#include "../my_plugin/my_plugin.h"
MainWindow::MainWindow(QWidget *parent) :
    myExternalClass(new MyExternalClass)
{
}

在插件中

#include "my_plugin.h"
MyExternalClass::MyExternalClass(QWidget *parent)
{
}

i但是,出现错误:

/path/mainwindow.cpp:31: error: undefined reference to `MyExternalClass::MyExternalClass(QWidget*)'
:-1: error: collect2: error: ld returned 1 exit status

我出了什么问题?

预先感谢大家。

未定义的引用是链接错误。您需要链接到插件库。

这不是使用插件的一般方法。通常,主程序定义了定义COMON接口的一组标头文件。如果要使接口基类具有函数,它还应该为插件库链接到一个库。如果您希望基本类从Qwidget继承,则由于QT的自动生成方法,需要提供库。替代方案是仅向插件询问Qwidget,然后通过信号/插槽进行通信,这样您就不需要提供库。

然后将插件链接到该库,并定义从提供的接口继承的类。在运行时,您会动态加载插件库,获取以某种方式提供的接口对象,例如通过外部" C"方法,然后使用该方法进行交流。

另外,由于您的样本中有一个Qwidget,请查看插件的QT手册。