当一个程序需要加载使用很多资源时:我们需要将这些资源都拷贝到真机中。比如:我们要播放几个声音文件,需要将声音文件给拷贝到真机中。类似的:程序可能还需要很多dll。这些dll又分两种:一种是已经做好的,一种是我们项目中生成的(亦即:我们工程分很多模块,最终生成了若干个dll和最终的exe)。对于前者:我们只要做一个拷贝即可,而对于后者:则需要生成后拷贝.
对于纯symbian程序,这些都是写在mmp和pkg文件中的,但是在symbian中:我们需要将其全部书写在pro工程文件中,而后qmake时其会自动将pro转为mmp和pkg。所以关键是:如何书写pro文件,以前也写过一篇博文说明这个,但是那时写的不太详细,这里详细说明一下。
1、对于模拟器版本
首先:编译模拟器版本,我们也是需要把资源和dll都拷贝到模拟器环境目录中的。
(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\。。。自己的实际路径即可。
这样:我们便可将资源拷贝到模拟器环境中,模拟器便可以使用这些资源,不至于启动不起来了~
(2)对于dll库:
首先需要声明一下,其次是拷贝。声明还是很有意思的,因为在win32环境下和symbian环境下其声明方式是不一样的,对于动态库:
- 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"
此后便是简单的拷贝,拷贝方式和资源拷贝没什么区别。注意的是:如果您的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动态库的拷贝:
- 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 这个宏可以随便书写的,你也可以依据dll的不同分组定义多段这样的拷贝代码,方便结构清晰。同时:dll的声明也是需要的喔~
容易出错的地方:拷贝文件的时候:前后名字一定要一样,别笔误写错了。同样:拷贝多个文件时,若其名字差不多,可千万别写错了,不然后期检查起来可痛苦了。
这里只给出了gcce的拷贝,如果你想一个pro中同时可以编译gcce和arm版本,而又不想每次都来手动修改pro,那就对应着写两段,而后用不同编译器的宏区分一下就成了。
小结:关于Qt For Symbian资源和DLL的拷贝的内容后介绍完了,希望本文对你有所帮助。另外给大家推荐一篇文章:
http://wiki.forum.nokia.com/index.php/Qmake%E7%9A%84%E4%BD%BF%E7%94%A8%E6%BC%94%E7%A4%BA 这是地址。