今天在使用QsciScintilla的派生类进行信号槽绑定的时候,遇到了LNK2001:无法解析的外部符号问题,可是我的派生类里Q_OBJECT宏已经加上了,为什么还会报这个错误呢?
error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const QsciScintilla::staticMetaObject" (?staticMetaObject@QsciScintilla@@2UQMetaObject@@B)
百度相关信息时看到了这篇帖子,遇到的问题和我类似:
使用QWT产生error LNK2001的原因及解决方法_sta30001的博客-CSDN博客
解决方法:
在CMakeList.txt中添加对QSCINTILLA_DLL的定义:
add_definitions(-DQSCINTILLA_DLL)
编译成功!
在qscintilla源码中搜索QSCINTILLA_DLL,在src\Qsci\qsciglobal.h中看到QSCINTILLA_DLL的说明: