詳解Qt For Symbian資源和DLL的拷貝
當(dāng)一個程序需要加載使用很多資源時:我們需要將這些資源都拷貝到真機中。比如:我們要播放幾個聲音文件,需要將聲音文件給拷貝到真機中。類似的:程序可能還需要很多dll。這些dll又分兩種:一種是已經(jīng)做好的,一種是我們項目中生成的(亦即:我們工程分很多模塊,最終生成了若干個dll和最終的exe)。對于前者:我們只要做一個拷貝即可,而對于后者:則需要生成后拷貝.
對于純symbian程序,這些都是寫在mmp和pkg文件中的,但是在symbian中:我們需要將其全部書寫在pro工程文件中,而后qmake時其會自動將pro轉(zhuǎn)為mmp和pkg。所以關(guān)鍵是:如何書寫pro文件,以前也寫過一篇博文說明這個,但是那時寫的不太詳細(xì),這里詳細(xì)說明一下。
1、對于模擬器版本
首先:編譯模擬器版本,我們也是需要把資源和dll都拷貝到模擬器環(huán)境目錄中的。
(1)對于資源:
- view plaincopy to clipboardprint?
- symbian {
- BLD_INF_RULES.prj_exports += \
- ".\voice\123.wav \epoc32\winscw\c\resource\apps\qtqt\123.wav" \
- ".\voice\456.wa \epoc32\winscw\c\resource\apps\qtqt\456.wav" \
- symbian {
- BLD_INF_RULES.prj_exports += \
- ".\voice\123.wav \epoc32\winscw\c\resource\apps\qtqt\123.wav" \
- ".\voice\456.wa \epoc32\winscw\c\resource\apps\qtqt\456.wav" \
如上:只要前邊替換為工程中資源的實際所在路徑,后邊寫\epoc32\winscw\c\resource\。。。自己的實際路徑即可。
這樣:我們便可將資源拷貝到模擬器環(huán)境中,模擬器便可以使用這些資源,不至于啟動不起來了~
(2)對于dll庫:
首先需要聲明一下,其次是拷貝。聲明還是很有意思的,因為在win32環(huán)境下和symbian環(huán)境下其聲明方式是不一樣的,對于動態(tài)庫:
- view plaincopy to clipboardprint?
- win32 {
- LIBS += -L BaseClass.lib
- }
- symbian:LIBS +=
- MMP_RULES += "LIBRARY BaseClass.lib"
- win32 {
- LIBS += -L BaseClass.lib
- }
- symbian:LIBS +=
- MMP_RULES += "LIBRARY BaseClass.lib"
此后便是簡單的拷貝,拷貝方式和資源拷貝沒什么區(qū)別。注意的是:如果您的dll都是工程編譯過程中生成的,那就不需要拷貝了。
2、對于真機版本:
也是分資源拷貝和dll拷貝。拷貝方式和上述不同。
(1)對于資源文件的拷貝:
- view plaincopy to clipboardprint?
- symbian: {
- LANGUAGEFILE.pkg_postrules = "\".\language\language.dat\"-\"!:\resource\apps\qtqt\language.dat \" "
- DEPLOYMENT += LANGUAGEFILE
- }
- symbian: {
- LANGUAGEFILE.pkg_postrules = "\".\language\language.dat\"-\"!:\resource\apps\qtqt\language.dat \" "
- DEPLOYMENT += LANGUAGEFILE
- }
(2)對于dll動態(tài)庫的拷貝:
- view plaincopy to clipboardprint?
- symbian: {
- QTLOGDLL.sources = \epoc32\release\gcce\urel\QtLog.dll
- QTLOGDLL.path = \sys\bin
- DEPLOYMENT += QTLOGDLL
- }
- symbian: {
- QTLOGDLL.sources = \epoc32\release\gcce\urel\QtLog.dll
- QTLOGDLL.path = \sys\bin
- DEPLOYMENT += QTLOGDLL
- }
如果你用的arm編譯器,把上邊的gcce修改一下.這里邊DEPLOYMENT 這個宏可以隨便書寫的,你也可以依據(jù)dll的不同分組定義多段這樣的拷貝代碼,方便結(jié)構(gòu)清晰。同時:dll的聲明也是需要的喔~
容易出錯的地方:拷貝文件的時候:前后名字一定要一樣,別筆誤寫錯了。同樣:拷貝多個文件時,若其名字差不多,可千萬別寫錯了,不然后期檢查起來可痛苦了。
這里只給出了gcce的拷貝,如果你想一個pro中同時可以編譯gcce和arm版本,而又不想每次都來手動修改pro,那就對應(yīng)著寫兩段,而后用不同編譯器的宏區(qū)分一下就成了。
小結(jié):關(guān)于Qt For Symbian資源和DLL的拷貝的內(nèi)容后介紹完了,希望本文對你有所幫助。另外給大家推薦一篇文章:
http://wiki.forum.nokia.com/index.php/Qmake%E7%9A%84%E4%BD%BF%E7%94%A8%E6%BC%94%E7%A4%BA 這是地址。