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
?、诰幾g前戲。首先,配置編譯選項,進行
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