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

最近使用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即可!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 界面 主窗口界面设计 标题栏:直接设Window-Title属性;Window-icon属性可加图标。底部状态栏:...
    码园老农阅读 3,801评论 1 13
  • 徐红伟@百香果科技 QObject类是所有Qt对象的基类。是Qt对象模型(Object Model)的基础,该模型...
    Alliawell阅读 1,790评论 0 0
  • Qt包含了一组丰富的基础enablers,它们主要来自Qt Core[https://doc.qt.io/qt-5...
    秋冬不寒阅读 157评论 0 1
  • PyQt5入门教程 2019/12/11更新:我平时不看CSDN的,之前一时兴起发了过来,没想到反响还不错。这次就...
    资源分享吧1阅读 1,503评论 0 1
  • P.S.(该系列文章是个人学习总结,拿出来和大家讨论,水平有限,如有错误,特别、非常、极其欢迎批评和指正!) 开始...
    黎明_bbce阅读 362评论 0 0