VS2017中QT插件的Config配置

Qt Creator配置文件

我们日常在使用QT的时候,经常会用到Qt Creator,比如你想在程序中运用到C++11的特性
你就需要在pro文件中加入下面这句话
在这里插入图片描述

这样一来,我们就可以使用诸如,lamda函数等功能。在我理解里,这个应该就是告知c++的预处理器,我们要使用这个功能。

编译器运行机制

具体关于程序如何运行。我们举最简单hello world程序为例,如下图所示:
在这里插入图片描述
简单来说,上图由预处理器、编译器、汇编器、链接器构成了c++的编译系统

  • 预处理器:主要处理程序中#开头的语句,如#include ,#define,这些就是要求程序提前需要知道的内容,由预处理器处理翻译成hello.i的文件。
  • 编译器:主要负责转换成底层汇编器能够理解的语言,因为c++属于高级语言,就相当于一个外交官将别国语言翻译成自家的语言,最终翻译成一系列的汇编语言,以hello.s文件表示。
  • 汇编器:主要处理hello.s中的汇编语言代码,并将其翻译成机器级的代码(应该是二进制0,1运算),这里就是hello.o文件,具体的功能就是重新定位目标。
  • 链接器:主要就是处理hello.o文件,因为包含了printf函数,其需要用到预处理器中生成printf.o的文件中,换言之,就是hello.o依赖于printf.o文件,需要链接起来以表示这种关系,这份工作由链接器完成。

这样,我们就基本懂得了c++编译系统原理

遇到的问题

言归正传,我们之所以介绍前面的内容。因为,前面提到的Config配置属于预处理定义中的内容。
而,我们的问题是:由于Qt自身定义的signals,slots和emit关键字会与第三方库如Boost冲突,需要把下面一行加到你的项目文件(.pro)

CONFIG += no_keywords

这行命令式告诉Qt在使用第三方类库如boost时不定义signals,slots和emit关键字。在no_keywords标志下继续使用Qt的信号与槽,只要简单替换源代码中Qt的moc关键字为相对应的Qt宏

  • SIGNALS-> Q_SIGNAL,
  • SLOTS ->Q_SLOT
  • emit ->Q_EMIT
    当然,因为我们的项目是在vs中使用QT插件,就没有pro文件!那怎么办呢?回到之前提到的,由于他是个预处理的定义,所以可以在VS项目属性中增加QT_NO_KEYWORDS,具体如下图所示
    在这里插入图片描述
    哒哒哒,再将关键字替换即可
    在这里插入图片描述
    这样编译器就不会报错啦(一般为C2334错误)!
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值