‘壹’ 为什么在Windows下开发 QT 要用到 MinGW 他的作用是什么
MinGW和VC一样,是一个开发环境。开发QT用MinGW是因为QT是Linux环境下的一个图形库,用来开发图形界面的应用程序,而Windows环境开发图形界面应用程序不需要QT,但是为了不大量修改源代码,就要把QT移植到Win下。
实事上,开发QT也可以用VC,不过需要用源代码重新编译QT库,开始的时候不那么方便。MinGW因为也是从Linux下移植过来了(当然在Linux下不叫MinGW),所以有相应的编译好了的QT库,直接用就可以了。
‘贰’ qt 跨平台 选哪个编译器
Qt 跨平台可以选 MSVC 和 MinGW 两个编译器。
MinGW 比较方便,配置易上手,但是 WebEngine 是没有的。 MSVC 也不错,功能强大,包括了WebEngine 模块。 如果项目使用到的一些第三方的 lib,或者 dll,使用 MSVC 编译出来的,那么推荐用 MSVC(应该是必须,不同的编译器生产出的库一般是不兼容的或者兼容效果差)。
‘叁’ qt是c++编译器自带的,还是需要自己去下载
Qt不过是使用C++的图形库,编译器可以选用任何支持C++的编译器,所以需要分别下载和安装。
windows版的qt,大体分为两种提供二进制下载,g++和MSVC,无论哪一种在使用前必须先安装编译器。另外windows版的集成开发环境Qt-creator gcc版安装包中带有编译器。
在无二进制发布的操作系统,如IBM Aix中就只能使用xlc或gcc编译器编译qt源代码获得qt库了。
‘肆’ qtcreater 怎么设置msvc编译
该方法可以使用在win 8.
1、编译Qt 5.0.2,编译器为Msvc 2012
2、下载Cdb.exe,这个是给控制台调试代码用的,Msvc用的调试器是WinDbg,所以安装vc是没有Cdb的,网址:
注意:现在上面说的网址已经不能用了,沿用上面的网址进去下载 WDK 8,这个对应的VS 2012 for win 7, 这个安装很慢。或者下载2010的对应的CDB,下载网址:
C:\WinDDK\7600.16385.1\Debuggers
这个下面是有CDB的。
3、完成后安装。
4、打开Qt Creator,在"工具"->"选项"里面如下设置地方点击自动检测即可:
‘伍’ VS里正常的代码在QT里执行有问题要怎么弄好QT的
在安装 QT+MSVC环境的时候,该出的问题我想都让我碰上了。
问题1 :jom.exe 崩溃,构建不通过。
jom: ......... Error 219:19:11: 进程"E:QT1ToolsQtCreatorinjom.exe"退出,退出代码 2 。Error while building/deploying project untitled (kit: Desktop Qt 5.5.1 MSVC2015 64bit)When executing step "Make"这个我没有出现什么cl不是内部命令的提示,至于使用nmake就更错了,nmake运行就出问题,估计是安装时nmake就有问题了。所以不是环境变量之类的错误,由于我前期先安装的QT+MinGW,后来需要MSVC才安装的vs2015,估计是这个安装先后顺序导致一些配置不对,反正我的kit配置都没有错误提示了也不行,干脆直接全卸了重新来。这次OK了,msvc,mingw都能用了。后来看到有初始化msvc编译环境的脚本,如果不行就先使用下试试,没准就OK了,不用浪费时间重新安装(安装时间好长呀)
1
问题2 -1: error: LNK2019: 无法解析的外部符号 **,该符号在函数 ** 中被引用,看图说话。
无法解析的外部符号说明,该函数的库或头文件没有被引入,比如下面
qmfcapp.obj : error LNK2019: 无法解析的外部符号 __imp_SetWindowsHookExW,该符号在函数 "public: static bool __cdecl QMfcApp::pluginInstance(void *)" (?pluginInstance@QMfcApp@@SA_NPEAX@Z) 中被引用在QT中找到QMfcApp::pluginInstance函数查看了下使用到外部函数的地方SetWindowsHookEx,点击可以跳转到头文件WinUser.h,那就是库没有了。由于原来是MinGW,内部的库都导入了,转到MSVC后一些自带的系统库没有加进来。网络查找SetWindowsHookEx该函数所需库User32.lib,在电脑上搜了。然后在.pro工程文件中右键加入库如下
把加后缀的勾删了,我这window下好像没有专门的d版调试库。
OK。这时在库里就自动加上了下面这几行。
1
2
3
4
1
问题3 User32.Lib:-1: warning: LNK4272:库计算机类型“X86”与目标计算机类型“x64”冲突
刚开始时找错了库,找到的是32位编译出来的user32.lib库,后来直接到系统盘window下找到了64位的就OK了。
问题4 This application has requested the Runtime to terminate it in an unusual way
这个在我安装了vs2015就出现了这问题,没装时都好好的。这个上一篇有讲到,这次又遇上了,我真的是无语了,也是莫名其妙的又不报了。具体怎么弄好的我也摸不着,vs2015又装了VC++里的所有部分(MFC类,兼容XP什么的两个,原本就一个VC++编译器的),到qt安装目录里有个vcredist_msvc2015_x86运行,重启后也一样,然后还有什么,重新拷贝库?一堆事情,一个个试都不好,换vb,vs,突然之间就好了,可是VB来错误53,找不到dll了,vs来加载格式不正常,这个看问题5。但有一点可以肯定—-错误与下面的dll无关,这个是depends找不到有关的bug。
问题5 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)
这里是目标平台和库不一致,需要注意下,用MinGW编译的去MinGW版的QT库里找对应的库(debug版和release版),然后要注意的是它是32位的,所以vs里只能选择X86平台。貌似没有找到有64的MinGW版本的QT.
而MSVC我下的是64的,所以只能选则X64平台。拷贝库也是到msvc版的QT库里找。如果库位数不对,会呈粉红色。
问题6 其他信息: 无法加载 DLL“bstdll.dll”: 找不到指定的程序。 (异常来自 HRESULT:0x8007007F)。
换成X86的拿mingw编译出来的试出这问题,拿到在VB下就是 实时错误53:找不到DLL的意思了。这个估计就是跟安装了vs2015的问题有关了。安装了vs2015后VC++估计把我一些32位的库给弄掉了,怎么都无法成功了。尝试下个msvc 32位的编译看是否一样。
问题7 error: C2373: “saveImage”: 重定义;不同的类型修饰符
同样的代码用64的编译器和MinGW都没问题,换成32位的msvc就出问题了,
.h文件
.cpp文件
void saveImage(const char *file){平常看到的讲解导出dll都没要求实现里也要加上__stdcall,这里报错就是这个原因,.cpp里也加个__stdcall就OK了。
1
2
3
1
问题8 其他信息: 无法在 DLL“xxx.dll”中找到名为“xxx”的入口点。
到这一部至少说明,dll可以被找到,目标平台和生成的dll也是一致的,只是入口函数找不到,可能是导出名不对了,depends查看下果然名字被过度修饰了。变成了_function@bytenum形式。
怎么解决我不知道msvc的编译器有没有这个选项,直接改成这个名字算了。
问题9 发生了 PInvokeStackImbalance
对PInvoke函数的调用导致堆栈不对称。
先看看是不是调用协议不对,vb是__stdcall,vc++默认用__cdecl,如果一致了还出错,那可能是long要改成int32,这个尝试改下就行了。我就是这么解决的。
到此,无论是64还是32位都能用了。坑好多啊。MinGW版不知道为什么就是错误提示找不到dll,装了个VS2015麻烦这么多。有知道的大神可以解惑下。
有些人说MinGW版编译的dll不能在window下用是有问题的,反正我不装VS2015时一切都好好的。如上篇所述,而且也在别人机子上试过。现在没时间找这个问题了,能用就行了。
‘陆’ QT用VS还是MINGW编译好,有什么区别
MinGW 兼容性更好,调试也更方便。
VS生成的 exe 发布时依赖的 dll 少一些,其他都不如 mingw。
‘柒’ vs2015+qt5.6为什么每次新建工程都需要配置编译器
1. 首先,我们到网站下载源码包,加压源码包到磁盘。 2. 由于编译QtWekbit需要ICU andANGLE 库,ICU库需要单独下载和编译,从下载ICU4Cversion 56.1并解压到磁盘,目录位置参见随后说明。 3. 在Qt 5.5.1的源码包中还存在一个BUG,如果直接编译的...
‘捌’ QT中怎么静态编译,静态编译的步骤是什么。
Qt采用编译的方式安装的时候,配置中默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,所以在此介绍一下qt如何来进行静态编译第一步:下载源码包Qt/X11版本:qt-x11-opensource-src-4.5.2.tar.gz第二步:解压缩tarzxvfqt-x11-opensource-src-4.5.2.tar.gz第三步:进入到刚才解压缩后的文件夹下并进行配置,如下./configure-release-platformwin32-msvc2008-static-nomakeexamples-nomakedemos-no-qt3support-no-scrip
...
by
fengyetang
2010-07-04
回复
(0)