ctk插件报错:main.obj:-1: error: LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const
问题
在使用Common Toolkit Plugin Framework,简称CTKPlugin,创建插件时,报错:
LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const XXX::staticMetaObject" (?staticMetaObject@XXX@@2UQMetaObject@@B)
其中“xxx”是你的插件类,比方我的插件类名称是:MonitorTopologyForm
原因
自己插件类中没有声明:Q_DECLARE_INTERFACE 宏
解决
在自己的插件类中声明 Q_DECLARE_INTERFACE 宏,例如
class MonitorTopologyForm : public QWidget
{
Q_OBJECT
public:
explicit MonitorTopologyForm(ctkPluginContext* context, QWidget *parent = nullptr);
~MonitorTopologyForm();
void paintEvent(QPaintEvent *event);
void mouseDoubleClickEvent(QMouseEvent *event); //label鼠标双击
void demo();
signals:
void setQLabel();
private slots:
void on_antennaLabel_clicked();
void on_antennaLabel_doubleClicked();
private:
ctkPluginContext* m_pContext;
Ui::MonitorTopologyForm *ui;
QImage *m_image;
//这个坐标ponit用于取图片上某个坐标点的色素作为透明色,默认为QPoint( 0,0 )
QImage lableimage ;
QImage getTransImage( QImage image , QPoint ponit = QPoint( 0,0 ) ) ;
paramSettingForm *paramSet_;
};
Q_DECLARE_INTERFACE(MonitorTopologyForm, MonitorTopologyForm_iid)
// MONITORTOPOLOGYFORM_H