初涉Windows Mobile下的QT程式移植和部署

來源:互聯網
上載者:User
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+QTIntegration Environment下作的開發,你可以需要先使用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工程所在的解決方案裡添加一個新的安裝部署的項目,如(點擊可看大圖):

這裡有幾個要點:

  1. 添加到當前解決方案(因為要讓安裝部署的項目依賴我們的主專案)
  2. 項目名稱,目錄裡最好不要有中文出現,也不要有空格之類的
  3. 安裝部署項目的屬性裡,關於製造商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程式移植的博文,哈哈!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.