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。