[转帖]windows中编译运行QT程序(关键工具:mingw32-make)_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3730 | 回复: 0   主题: [转帖]windows中编译运行QT程序(关键工具:mingw32-make)        下一篇 
clover
注册用户
等级:少校
经验:843
发帖:73
精华:0
注册:2013-6-28
状态:离线
发送短消息息给clover 加好友    发送短消息息给clover 发消息
发表于: IP:您无权察看 2013-7-9 14:54:19 | [全部帖] [楼主帖] 楼主

qt程序最大的优势就是可移植性强,这次我使用为mini2440开发板编写的程序源码,使用WINDOWS中的qt编译环境对其进行编译运行,展示其强大的可兼容性。

     首先在WINDOWS下安装Qt sdk

北京联动北方科技有限公司

    打开:Qt Command Prompt,在类似命令行的qt终端的操作。

进入spreadsheet程序目录,首先执行mingw32-make clean,删除以前编译留下的中间文件。

北京联动北方科技有限公司

接着执行:qmake -peoject。生成spreadsheet.pro文件
再执行:   qmake spreadsheet.pro,生成Makefile,Makefile.Debug和Makefile.Release三个文件

最后执行:mingw32-make,实际上是执行默认的:mingw32-make  -f  Makefile.Debug

这时会在spreadsheet目录下的debug目录生成很多的文件,其中一个就是spreadsheet.exe,我们双击执行。有下面提示:

“没有找到mingwm10.dll,因此这个应用程序未能启动----”

北京联动北方科技有限公司

    而如果直接在Qt Command Prompt窗口中进入debug目录,输入spreadsheet可执行文件的名字,回车之后发现是可以运行的。

北京联动北方科技有限公司

这种情况绝大多数的问题出在环境变量上。用Qt Command Promtp去执行编译好的qt程序是没有问题的,但双击图标执行程序就会出错。
请仔细看看刚进入Qt Command Promtp时屏幕上打印的几行字:

北京联动北方科技有限公司
由于qt默认是动态编译的,执行的时候需要加载动态库,而安装qt的时候并没有修改环境变量,所以它找不到某些库是很正常的。这时只要修改一下环境变量就行了。进入“控制面板”,双击“系统”,选择“高级”,单击下面有一个名为“环境变量”的按钮。之后选择path,单击编辑。最后在“变量值”一栏的最后添加上你的qt路径。例如我添加的路径为:;G:\Qt\qt\bin(注意,路径前面的分号是必须的!!!)
保存后你再双击编译好的qt程序就可以正常运行了。

     可以看到我们编写同样的QT程序,使用不同平台的编译器,就可以产生出针对不同平台的可执行程序,几乎不须要我们做什么移植的工作,很好很强大!

另外这里有必要介绍一下mingwm10.dll的作用(以下整理自网络)

MinGW的全称是Minimalistic GNU for Windows,它提供了基于GNU GCC 和其他相关程序( make、autoconf 等等)构造Win32 程序所必需的头文件和库。也许你首先会想到Cygwin。两者都是可以将Unix 下程序在Win32下编译运行的办法。但所不同的是,Cygwin中是将完整的POSIX 系统调用映射到本地API,使用一个模拟POSIX 调用的dll。因此在实际执行时的效率比不上本地编译代码。另外一点:Cygwin的License 是GPL,也就是说你在Cygwin上平台的代码必须开放。(这个是很难让人接受的,仅仅因为移植代码就要开放源码)

而MinGW 与Cygwin的上述两点恰好相反,它将代码编译成Win32 本地代码,使用msvcrt.dll的C运行时库。而且MinGW的其他运行库不以GPL License保护,这也意味着你使用MinGW编译的代码不必公开源码。msvcrt.dll本身是随Win32平台发行的,因此这是一个完全免费的环境。

有人会问:有Visual C++、Borland C++ 等等,为什么还要用MinGW ?第一、它们不是免费的;第二、移植Unix下的C/C++程序将十分痛苦。

目前,开源社区中Unix下许许多多著名的库和程序都有了MinGW的版本(因为移植方便)。同时Win32本地 API 和其他一些库,比如DirectX 7/8/9,OpenGL都被移植到了MinGW 下,它是理想的跨平台解决方案。

但经使用发现mingw编译的程序有的还需要mingwm10.dll这个dll。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论