qt dll无法接收到信号

我这边写了一个dll,需要循环接收串口数据,串口类每次有数据都会给我发一个信号,但是connect后发现没有触发槽函数,是怎么回事?应该怎么解决?

多线程还是单线程?代码?

用的是第三方QextSerialPort类,是不是因为dll没被调用的时候不会有信号发出啊

public slots:
  bool readMyCom();

myCom = new QextSerialPort(portName);
connect(myCom, SIGNAL(readyRead()), this, SLOT(readMyCom()));

  • 文章:Qt调用DLL 中也许有你想要的答案,请看下吧

如果DLL是你自己写的,就在DLL中添加打印信息,在发送信号的地方打印一下,确认是否有信号发送出来了。
DLL中的信号跟普通信号是一样用的,所以最好先确认一下信号是否发送出来了。建议先不要着急封装DLL,先用源代码测试信号和槽是否能正常联通,源代码测试通过后,再把源代码封装成DLL,否则你后面测试都麻烦。

一般没有触发槽函数有可能是因为参数的问题,就是你定要的信号的参数,和你槽函数的参数不一致导致的。
还有就是有可能是你coonect的写的位置问题导致

信号signal未发出信号问题,将串口设置为事件驱动模式就好了 QextSerialBase::EventDriven。代码修改为:

myCom = new QextSerialPort(portName,QextSerialBase::EventDriven);

1.检查类里面有没有 Q_OBJECT 宏
2.信号函数 定义了 signals:

我没有用信号槽机制,我是单独开了一个线程循环读串口接收缓存,很稳定,连续跑个把月不在话下