错误访问另一个插件中的类(错误:未定义的引用)
Error accessing a class in another plugin (error: undefined reference)
我正在尝试访问类, 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手册。
相关文章:
- 错误:未定义对cv::cudacodec::createVideoReader的引用
- Pybind11 错误未定义对"Py_GetVersion"的引用
- 纯虚拟类和错误未定义对 'vtable 的引用
- 为什么我会收到链接器错误:未定义对 ..?
- 链接错误:未定义对 stdscr 和 wgetch 的引用
- 尝试构建 xerces c++ 解析器。Netbeans 和命令行构建错误未定义对"xercesc_3_2..."的引用
- 错误:未定义的符号:gzclose opencv emscripten
- 我不断收到对项目"xxx"的错误未定义引用
- 我仍然收到此错误未定义的引用:boost::log::v2_mt_posix::trivial::logger::get
- 符号查找错误未定义的符号:curl_mime_init
- Omnet 和 Inet 链接错误:未定义对 typinfo 的引用
- 模拟 __name__ = __main__ 在 c++ 中会导致错误"未定义类似函数的宏"
- 链接器错误:未定义的引用C++
- OpenCv3.3安装错误-未定义对的引用
- CUDA 编译错误:未定义__hmul和__hneg
- C++错误:未定义对 (Winsock2.h) 的引用
- 错误:未定义对 .. 的引用.怎么了
- 无法生成项目,出现错误 - 未定义的体系结构符号 x86_64:"_JNI_CreateJavaVM"
- 编译错误:未定义的拱门
- C 编程原理和练习第7章练习4 symber_table :: get_value始终显示错误未定义