Visual Studio 環境準備
本文使用的WindowsMobile開發環境是Visual Studio 2008版本,要求在安裝VS2008的時候,一定要選擇安裝Visual C++ ,并且要選擇上智能設備可編程技術選項。如下圖:
如果你已經安裝過VS2008,那么只要從Windows的“添加/刪除程序”找到VisualStudio2008進入維護模式即可重新添加或者刪除VS2008的組件。
在VS2008安裝完成后,已經可以開發基于WindowsMobile5.0的應用程序了。不過現在Windows Mobile系列手機大多都已經是WindowsMobile6.0或者6.1以上的版本了,甚至已經不少手機玩家已經將手機刷成WindowsMobile6.5了。所以建議大家至少應該安裝一個WindowsMobile 6 的SDK。并且最好是可以安裝一個簡體中文版本,因為簡體中文版本里的設備仿真器里的WindowsMobile是中文版本的,如果用英文版本設備仿真器,那么程序運行后中文只會被顯示為一個個的方框□□□□的。(WindowsMobile開發相關資源列表:http://www.cnblogs.com/upto/archive/2007/03/13/mobile-development-tools.html)
在WindowsMobile的SDK安裝完成后,先不要著急開始繼續后面安裝QT庫的步驟,讓我們先創建一個WindowsMobile程序試試:
(點擊看大圖)
?
直接按F5調試工程,經過短暫的編譯和部署的步驟后,就可以看到一個設備仿真器的界面,并且會隨機運行我們的測試程序,如下圖:
如果是在一個英文的ROM上運行,則會出現上面右圖的情形,可以參考下圖修改選擇合適的模擬器來進行調試(點擊小圖看大圖):
?
安裝用于WindowsMobile的QT庫
可以從QT的官方網站查閱具體的安裝步驟,具體可以訪問:
http://doc.trolltech.com/4.5/install-wince.html
簡單介紹一下我是如何按照上面的說明一步一步的安裝用于VS2008 + WindowsMobile SDK 6的QT庫吧。
第一步,當然是下載QT啦
當前 Qt for Open Source C++ development on Windows CE 的最新版本是4.5.2,可以從下面的鏈接下載:
?
http://get.qtsoftware.com/qt/source/qt-embedded-wince-opensource-src-4.5.2.zip
如果想查看下載最新的版本的話,請訪問這個網址:
http://www.qtsoftware.com/downloads/win-ce-cpp
恩,這個包大小是138M,我用ADSL好一陣等啊。。。。
第二步,安裝配置前的設置
首先是解包,將下載回來的包解壓縮到c:\qt里,不過這個目錄名稱qt-embedded-wince-opensource-src-4.5.2好長啊,修改成c:\qt\ce452好了。
我們可以注意到,在c:\qt\ce452\bin里,已經有一個很重要的批處理命令setcepaths.bat。
下一步,從Visual Studio 2008的菜單項里,找到Visualt Studio Tools里的Visual Studio 2008命令提示符,點擊它可以打開一個命令提示符,在這個命令提示符里,已經設置好了Visual Studio所需要的各種環境變量。你也可以打開任意一個命令提示符,然后運行 C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat ,也是同樣的。
然后,將c:\qt\ce452\bin 增加到PATH環境變量里。
注意:從這步開始,我們的操作將主要在這個命令提示符窗口里輸入命令。
第三步,配置QT庫
從QT官方網站我們可以看到這樣的配置示例:
configure -platform win32-msvc2005 -xplatform wincewm50pocket-msvc2005
可是我們使用的卻是vs2008,該如何進行配置呢?我們可以打開(注意,是用文本編輯器打開而不是運行它)先前提到的 c:\qt\ce452\bin\setcepaths.bat,在最后面看到了適合vs2008的平臺名稱:wincewm60professional-msvc2008 (適合PPC類終端,如果是非觸摸的smartphone則選擇wincewm60standard-msvc2008),這兩個名稱也可以在c:\qt\ce452\mkspecs目錄下看到。
于是我們執行下面的命令:
cd /d c:\qt\ce452
configure -platform win32-msvc2008 -xplatform wincewm60professional-msvc2008
于是經歷了漫長的等待后,終于將QT庫進行了正確的配置。
接著是一步很重要的操作,運行:
setcepaths wincewm60professional-msvc2008
這個命令將會為我們設置適合的PATH,INCLUDE,LIB等環境變量,讓我們可以在編譯過程中正確的引用代碼包含文件和庫文件等。
然后就是用vs2008提供的命令來進行QT庫的編譯了,簡單的在命令行輸入:
nmake
這一次將經過更長的編譯過程。不過假如沒什么意外發生的話。你只要去散散步或者喝水杯咖啡小歇一會再回來,QT for Windows Mobile 6 的庫就已經編譯完成,可以使用啦。
移植和運行調試QT開發的應用程序
注意,我們還是在之前的命令提示符下進行后面的操作。如果你已經關閉了那個提示符窗口,那么可以新打開一個提示符窗口,然后將 c:\qt\ce452\bin添加到PATH環境變量的前面,然后運行VisualStudio的vcvarsall.bat,如下所示:
PATH C:\qt\ce452\bin\;%PATH%
"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
setcepaths wincewm60professional-msvc2008
這里的環境變量設置是非常重要的步驟,只有正確設置了,才可以正確的產生和編譯鏈接 Windows Mobile的應用程序工程。
首先要根據QT的 *.pro 文件生成可以在vs2008里使用的 *.vcproj文件,如果你是在VS2008+QT集成環境下作的開發,你可以需要先使用qmake? –project 命令來生成*.pro文件,然后我們可以使用下面的命令來生成vcproj文件:
qmake –tp vc
你也可以指定輸出文件:
qmake –tp vc –o ***.vcproj
使用過VisualStudio和QT開發過桌面應用的童鞋一定會發現,這個命令其實就是用來將QT Project文件 ***.pro轉換成Visual Studio的工程文件的。
注:如果你并未設置環境變量,那么最好使用絕對路徑運行qmake,比如 c:\qt\ce452\bin\qmake –tp vc –o ***.vcproj
使用VisualStudio2008打開生成的 vcproj文件,然后按F5嘗試編譯運行。對于大部分簡單的QT應用程序,到了這步基本上是不會有太多問題了。然而應用于WindowsCE的QT庫與應用于普通Windows平臺的QT庫還是有一些差別的。具體的差別,恩,這個,我現在一個初學者還真說不上來什么。不過在我做一個具體的移植的工作時,至少遇到了QString::toStdString()不能用于WindowsMobile開發的情況,據說是因為在WindowsMobile里無法支持STL。。。。
恩,總之,經過一番修改后,我們的新工程終于可以成功編譯完成了。然后按F5運行之。
生成….ok
部署.…ok
載入應用程序….YEAH,我們的QT窗口成功的在模擬器系統里出現啦:
旁邊的對比圖片是在Windows7下的運行效果,是很像吧? 恩,不過還是有點點區別哦,字體和按鈕跟桌面上是不一樣的效果了,最大的區別是,窗口的菜單欄,跑到右下角啦。
這個測試程序是一個用來測試動態切換語言的,在桌面環境下,如果點了菜單里的translate后,就會將窗口上的文字都翻譯成中文或者是另外一個字串,菜單的響應槽代碼如下:
void i18n::on_actionTranslate_triggered()
{
??? QTranslator trans;
??? switch(nLang)
??? {
??? case 0:
??????? trans.load("i18n_zh");
??????? break;
??? case 1:
??????? //nothing
??????? break;
??? }
??? qApp->installTranslator(&trans);
??? nLang= (nLang+1)%2;
??? ui.retranslateUi(this);
}
可是在模擬器上點了菜單后,界面沒有任何響應,查閱上面的代碼,很顯然,trans.load肯定失敗了。。。我們直接調試程序的時候,VisualStudio只是簡單的部署了應用程序主輸出文件(i18n.exe)和相應的qt庫函數和Visual Studio 2008的C運行庫,另外,細心的朋友一定也會注意到,現在啟動的是一個英文版本的模擬器,如果不將其更換為中文的模擬器,即使我們成功的部署了i18n_zh.qm,也是不會顯示出中文的。所以讓我們從VisualStudio2008里更改一下部署設置吧:
可以再從“項目”菜單里選擇“項目屬性”來打開上面的窗口,然后從左側選擇“部署”即可。其中“部署設備”里列出的是在你的機器上所有安裝注冊了的模擬器。如果你安裝了WindowsMobile 6.5 的Developer Tool,那么還可以看到有Windows Mobile 6.5的選項的。而“附加文件”里則是一些要隨同目標文件部署的文件,qtgui和qtcore庫以及visualstudio2008的運行時庫就是在這里配置部署到模擬器里的。讓我們點開它:
部署的附加文件列表格式是:一行一個文件,每行格式為 文件名|本地磁盤目錄|目標路徑|注冊表否 ,在上圖里我已經填寫好了缺失的i18n_zh.qm文件的部署信息了。
確定后重新按F5開始運行,這次是中文的模擬器了,并且切換顯示語言后的中文也正確顯示出來了:
利用QT編寫的窗口在WindowsMobile手機里,同樣的可以在右下角拖拉改變窗口的大小,也可以按住標題欄拖動以改變窗口的位置,這些,都與普通Windows窗口完全一致哦,好玩吧!是不是很想立刻就開始自己的WindowsMobile之旅了?別著急,還有最后一步,QT程序在WindowsMobile上的部署!
QT程序在WindowsMobile上的部署
此時,你的程序已經在WindowsMobile模擬器上正常運行了,你一定也跟我一樣,非常迫切的希望可以讓自己的程序在WindowsMobile的手機上運行起來吧!
在Visual Studio 2008的幫助下,這一切都是很輕松的事情。
首先,我們可以在我們的QT工程所在的解決方案里添加一個新的安裝部署的項目,如下圖(點擊可看大圖):
這里有幾個要點:
- 添加到當前解決方案(因為要讓安裝部署的項目依賴我們的主項目)
- 項目名稱,目錄里最好不要有中文出現,也不要有空格之類的
- 安裝部署項目的屬性里,關于制造商Manufacture的名字,不能用中文。需要將默認公司名稱修改為英文的。否則最后生成CAB文件時會失敗。
添加后的Visual Studio界面如下圖所示
安裝項目默認會在“文件系統”標簽里顯示“Program Files文件夾”和“應用程序文件夾”兩項,可能你會有點迷惑,但是簡單的試驗就能明白各是什么含義的。簡單做一下說明:
位置 Program Files 對應WindowsMobile上的“程序”,你可以在這里創建目標文件的快捷方式,這樣你的程序圖標就可以顯示在用戶手機里了。倘若你不在這里創建快捷方式,要運行你的軟件,就只能通過WindowsMobile的文件管理器去尋找你的程序才能運行了。這個位置有點點 PC “桌面” 的意思。
除此之外,你還可以添加一個“Start Menu”的系統文件夾,對應WindowsMobile手機左上角的開始菜單,這個跟桌面Windows版本是一致的。
而位置“應用程序文件夾”其實相當于桌面Windows里的C:\Program Files\…. ,所以你添加要部署的文件的時候,自然是應該添加到“應用程序文件夾”里的。下面開始添加需要部署的文件:
添加后的樣子:
?
?
?
注意,我這里添加的是Release版本的文件。如果你想打包Debug版本的程序,要添加的文件分別應該是QtCored4.dllQtGuid4.dll,msvcr90d.dll。
添加完成后,將項目配置切換為Release,然后在安裝項目上點右鍵,選擇“生成”即可將可以在手機上進行安裝的CAB包給制作出來了。
到此為之。大功告成了!我們終于可以在自己的WindowsMobile手機上運行自己寫的程序了。讓我們看看剛剛制作出來的安裝包:
囧 !!!! ORZ…
一個沒啥功能的軟件,居然有近9M的大小,看來用QT做的程序,這體型都沒辦法走苗條路線啊~~~~~算是一個美中不足的地方了吧。。。。
現在都在傳說Nokia將會在它以后產的手機里都部署上QT庫,也不知道真假,如果是真的,那我一定會再寫一篇初涉SymbianOS下的QT程序移植的博文,哈哈!
posted on 2009-08-26 09:55
披星戴月 閱讀(678)
評論(0) 編輯 收藏 引用 所屬分類:
WinCE