Qt-WinCE
全解
声明:
花费了三天时间,周转各大网站,终于在今天将自己的第一个
Qt
程序在“小
I(SAMSUNG i718+)
”上跑了起来!
一、
Qt
嵌入式环境的搭建
a)
首先,下载
Qt
的嵌入式开发包
qt-embedded-wince-opensource-src-4.4.0.zip
b)
然后,下载
VS2005
。
c)
最后,下载一个嵌入式开发的
SDK
,如
Windows Mobile 5.0 Pocket PC SDK,
可以在微软的官方网站上下载到!
d)
还有一个是同步的软件
Microsoft ActiveSync4.5
中文简体版。
------------------------------------------
安
----
装
----------------------------------
e)
首先安装
VS2005
,很简单,按照向导来,在自定义安装中务必选择“智能设备开发”。
f)
关于
Microsoft ActiveSync4.5
的安装更是“
straightforward
”。在此不再多说!
g)
然后,安装
Windows Mobile
或是其它版本的
SDK
,可以用自定义的
SDK!
简单
h)
比较麻烦的就是
qt-embedded-wince
的安装。参照下面的步骤:①、解压,将解压后的文件夹放到一个不含空格的路径中,如我的:
f:\penguinx\qt_wince
,
qt_wince
即为此文件夹。然后设置环境变量:右键“我的电脑”-
>
“属性”-
>
点“高级”标签-
>
“环境变量”选项-
>
在
"PATH"
中添加路径“
f:\penguinx\qt_wince \ bin
”。
OK
!②编译前戏。首先,配置编译选项,进行
VS2005
的命令行中,进入解压的文件夹,然后执行如下:
configure -platform win32-msvc2005 -xplatform wince50standard-armv4i-msvc2005
可以根据自己的板子及手机配置来选择其它的嵌入式的
xplatfrom
。这个过程可能需要十几分钟。执行完后,再次在
VS2005
中设置临时的环境变量,编译时要用到:如下:
set INCLUDE=D:\Program Files\Microsoft Visual Studio 8\VC\ce\include;D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Include\Armv4i
set LIB=D:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\armv4i;D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Lib\ARMV4I
set PATH=D:\Program Files\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%
在此我期望能根据自己的软件安装情况将上面的目录“拿来主义”一下。设
置完后,执行
nmake
,过两、三个钟头后,你就可以
Enjoy your journey.
最后,执行nmake,安装完毕!我的Qt-WinCE安装在
f:\penguinx\qt_wince
二、编译Qt-WinCE程序
命令行法
(
不用
IDE)
:
首先、用
VS2005
命令行进入要编译的程序目录
(
此目录最好就在安装目录
f:\penguinx\qt_wince
下
)
,执行
< f:\penguinx\qt_wince >bin\qmake.exe –project –o example.pro
其中,
Install Qt Path
为你的
Qt-WinCE
的安装目录。这个时候,可以产生
example.pro
文件。
然后、就是产生
Makefile
的时候:在
VS2005
命令行下输入:
f:\penguinx\qt_wince\bin\qmake -spec ..\mkspecs\wince50standard-armv4i-msvc2005 -win32 -o Makefile example.pro
此时,恭喜你,
Makefile
文件已经产生。
最后,就是用
nmake
来编译和链接程序了。先将安装时的环境变量
(
三个
set)
在当前
VS2005
命令行下重新执行一遍。否则会出现如下错误:
cl:
命令行
warning D9002 :
忽略未知选项“
-QRarch4T
”
cl:
命令行
warning D9002 :
忽略未知选项“
-QRinterwork-return
”
main.cpp
mainwindow.cpp
f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : error C2
146:
语法错误
:
缺少“
;
”
(
在标识符“
wceMenu
”的前面
)
f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : error C4
430:
缺少类型说明符
-
假定为
int
。注意
: C++
不支持默认
int
f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : error C4
430:
缺少类型说明符
-
假定为
int
。注意
: C++
不支持默认
int
f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : warning
C4183:
“
wceMenu
”
:
缺少返回类型;假定为返回“
int
”的成员函数。
然后,执行
nmake
,看着一行的白银流失完后,就是金子
(
你的
exe
文件
)
了。
注意:在执行
nmake
的时候,可能会看到如下错误信息:
link /LIBPATH:"f:\penguinx\qt_wince\lib" /LIBPATH:"f:\penguinx\qt_wince\
lib" /NOLOGO /NODEFAULTLIB:OLDNAMES.LIB /DEBUG /SUBSYSTEM:WINDOWSCE,5.00 /MACHIN
E:THUMB /OUT:debug\node.exe @C:\DOCUME~1\User\LOCALS~1\Temp\nm6B3.tmp
tmp\obj\debug_shared\main.obj : fatal error LNK1112:
模块计算机类型“
X
86
”
与目标
计算机类型“
THUMB
”冲突
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 8\VC\ce\b
in\x86_arm\link.EXE"
”
:
返回代码“
0x
458
”
这种错误搞的我很无奈,我不执行
nmake
,直接执行
nmake release
就没有这种错误?这种错误可能是因为“环境变量”中“
PATH
”中设置了“
f:\penguinx\qt_wince\bin
”。在我把这个变量去掉后,重新打开
VS2005
命令行
(
因为得重新读取
PATH
变量
)
。然后按照上面的步骤做下来,最后用
nmake
重新执行一遍,很好很流畅!
三、
Qt –WinCE
程序的部署(非打包)
可以直接把上面开发的
*.exe
文件和其需要的
*.dll
一起
CP
到一个目录中,这些
dll
一般有:
D:\Program Files\Microsoft Visual Studio 8\VC\ce\Dll\armv4i\ msvcr80.dll
F:\penguinx\wince_vs2005\lib\ QtCore4.dll
F:\penguinx\wince_vs2005\lib\QtGui4.dll
其它的根据自己项目的需要
CP
下,就行了。
如果想将程序部署成
*.cab
形式的,在上面的“解决方案”中,点“文件”-
>
“新建”-
>
“项目”-
>
点“其它”,其中有关于智能设备部署的,就它了
(
我在实验室机子上开发的,回来写手记,所以具体的操作记的不是非常清楚,将就!
)
。根据向导建立后,在新建的
cab
项目中点“属性”,最后,生成就行了。
CP
到板子就可以运行了。
注意:所有的
CP
都是用
ActiveSync
软件通过
USB
传输的,当然可以用其它传输手段,最终能上板子就行。
-Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189
注意在
WinCE
部署时的版本,如果设备上的
WinCE
版本比开发用的版本低的话,将显示“
****,
需要更新的
Windows
版本”云云。
/SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:THUMB
/SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:THUMB