为什么qt的moc文件会无法生成 qt和qtcreator有什么区别?都是做什么用的?

qt和qtcreator有什么区别?都是做什么用的?向下到编译和链接层,没有区别。它们都是根据参数设置和附加参数调用相应的编译器和连接器,最终完成整个程序的构造。区别在于两个方面:(1)参数分析的过程

qt和qtcreator有什么区别?都是做什么用的?

向下到编译和链接层,没有区别。它们都是根据参数设置和附加参数调用相应的编译器和连接器,最终完成整个程序的构造。区别在于两个方面:(1)参数分析的过程;(2)依赖关系的维护和更新,也就是所谓的工程组织形式(工程文档)。

经过多次修改,VC现在使用vcxproj文件来组织项目。在VS中按F5后,过程大概是这样的。我们用msbuild分析vcxproj,获取构建参数,求解依赖关系,启动编译器对源文件进行编译,最后调用链接器链接输出。当然中间还有很多其他过程,所以我赢了 这里就不赘述了。

QtCreator比较特别。一般来说,它使用pro和pri文件来组织项目,但它没有内置的构建工具。而是通过Qt工具链中的qmake工具解析pro和pri文件,生成其他构建系统可以识别的组织文件,包括make和nmake,然后调用相应的构建工具完成构建。至于这些建筑系统是如何工作的,去查相关资料和文件就可以了。

再多说两句,在构建Qt程序的时候,可能还需要几个额外的过程。一个是moc生成对象元数据,一个是uic把ui接口转换成C代码,一个是rcc把Qt资源定义文件qrc转换成数据代码。默认情况下,VS不会为您添加和维护这些进程,所以VS s Qt插件就派上用场了,可以自动帮你设置这些流程。还有,当VS构建Qt项目时,插件不会参与其中。也就是说,在安装了Qt插件的VS中组织的项目,在没有插件的VS中也可以成功构建。

当然,如果你所有的依赖关系都在pro文件中描述清楚了,那么用qmake生成vcxproj,然后启动vs来构建项目是完全可以接受的。

最后,Qt4的VS插件不再更新,VS的AddinAPI也面临退役的风险。在这里,我还是安利下我的fork的Qt4插件,修复了一些bug,增加了几个新功能,包括配置对话框弹性,x86和x64平台使用不同Qt版本,不同VS使用不同Qt版本,支持2012和2013,最近打算在2015年增加支持。

地址是:Jacky ding/Qt 4v addin github。

qt是封装了mfc嘛?

Qt是一个面向对象的框架,它使用特殊的代码来生成扩展(称为元对象编译器,moc))和一些宏。它易于扩展,并允许组件编程。支持跨平台。MFC是微软提供的类库。(类库),它以C类的形式封装了Windows API,并包含一个应用框架,以减少应用开发人员的工作量。其中包含的类包括大量的Windows句柄封装类和许多Windows内置控件和组件的封装类。不支持跨平台。