使用QPlugin的时候,我有如下定义,我希望让开发者传递BasicServerObject类进接口,然后在库里面触发该类的信号,由外部捕获。
class BasicServerObject : public QObject
{
Q_OBJECT
Q_SIGNALS:
void recvResponse(QByteArray array);
};
class BasicServiceInterface
{
public :
virtual void setCallBackObject(BasicServerObject *) = 0;
};
外部开发者使用代码
BasicServiceInterface *face = qobject_cast<BasicServiceInterface *>(instance);
BasicServerObject *m_obj = new BasicServerObject;
face->setCallBackObject(m_obj);
connect(m_obj,&BasicServerObject::recvResponse,
this,&MainWindow::onRecvResponse);
出现了我库里面一旦触发该信号,马上异常
emit m_callbackObject->recvResponse(array);
symbol lookup error: /libBasicServicePlugin.so: undefined symbol: _ZN17BasicServerObject12recvResponseE10QByteArray
其他接口是正常使用。
麻烦有经验的帮忙看下,在插件如何解决和设计自定义信号的问题,传入函数指针应该是可以把值回给开发者,但是我希望是信号的形式触发。
这个接口类也没办法继承QObject并定义信号,虽然能编译的过去,但是会导入失败。