美文网首页
Qt项目中使用boost::asio时emit报错

Qt项目中使用boost::asio时emit报错

作者: e196efe3d7df | 来源:发表于2023-03-15 15:12 被阅读0次

最近使用boost::asio的udp做项目,项目本身使用的是Qt的框架,Qt中也有QUdpSocket,但是在使用过程中,多线程有一些问题,就打算使用boost::asio中的udp,于是就把asio包含进项目,有下面几个问题,

  1. 首先是编译过程中直接警告:


    warning

    这个警告好解决,意思就是让你根据目标系统预定义一个宏:

Windows 7,你就定义_WIN32_WINNT=0x0601
Windows 10,你就定义_WIN32_WINNT=0x0A00

Visual Studio2017怎么搞呢?项目属性->C/C++->预处理器->预处理器定义,如下图所示:


预处理器定义
  1. 如果你的项目中使用了signals, slots, and emit,那不好意思,跟boost中的库有些冲突了(目前我看到的是emit冲突)
    会直接编译报错。
    怎么解决呢?Qt文档中已经提到这一点了https://doc.qt.io/qt-6/signalsandslots.html,具体如下:
    image.png
    什么意思呢?就是说如果这些signals, slots, and emit宏跟第三方库冲突了,你可以加个no_keywords,然后把你使用的signals, slots, and emit改成Q_SIGNALS (or Q_SIGNAL), Q_SLOTS (or Q_SLOT), and Q_EMIT
    经测试,不用加no_keywords,直接使用Q_EMIT即可!
    经测试,可以只在预处理定义那里添加QT_NO_EMIT即可!

相关文章

网友评论

      本文标题:Qt项目中使用boost::asio时emit报错

      本文链接:https://www.haomeiwen.com/subject/byvlrdtx.html