详解Qt For Symbian资源和DLL的拷贝

移动开发
对于纯symbian程序,这些都是写在mmp和pkg文件中的,但是在symbian中:我们需要将其全部书写在pro工程文件中,而后qmake时其会自动将pro转为mmp和pkg。对于pro文件,请看本章内容。

当一个程序需要加载使用很多资源时:我们需要将这些资源都拷贝到真机中。比如:我们要播放几个声音文件,需要将声音文件给拷贝到真机中。类似的:程序可能还需要很多dll。这些dll又分两种:一种是已经做好的,一种是我们项目中生成的(亦即:我们工程分很多模块,最终生成了若干个dll和最终的exe)。对于前者:我们只要做一个拷贝即可,而对于后者:则需要生成后拷贝.

对于纯symbian程序,这些都是写在mmp和pkg文件中的,但是在symbian中:我们需要将其全部书写在pro工程文件中,而后qmake时其会自动将pro转为mmp和pkg。所以关键是:如何书写pro文件,以前也写过一篇博文说明这个,但是那时写的不太详细,这里详细说明一下。

1、对于模拟器版本

首先:编译模拟器版本,我们也是需要把资源和dll都拷贝到模拟器环境目录中的。

(1)对于资源:

  1. view plaincopy to clipboardprint?  
  2. symbian {     
  3. BLD_INF_RULES.prj_exports += \      
  4. ".\voice\123.wav                                               \epoc32\winscw\c\resource\apps\qtqt\123.wav" \       
  5. ".\voice\456.wa                                                         \epoc32\winscw\c\resource\apps\qtqt\456.wav" \     
  6. symbian {  
  7. BLD_INF_RULES.prj_exports += \   
  8. ".\voice\123.wav                                               \epoc32\winscw\c\resource\apps\qtqt\123.wav" \    
  9. ".\voice\456.wa                                                         \epoc32\winscw\c\resource\apps\qtqt\456.wav" \   

如上:只要前边替换为工程中资源的实际所在路径,后边写\epoc32\winscw\c\resource\。。。自己的实际路径即可。

这样:我们便可将资源拷贝到模拟器环境中,模拟器便可以使用这些资源,不至于启动不起来了~

(2)对于dll库:

首先需要声明一下,其次是拷贝。声明还是很有意思的,因为在win32环境下和symbian环境下其声明方式是不一样的,对于动态库:

  1.    view plaincopy to clipboardprint?  
  2. win32 {     
  3. LIBS += -L BaseClass.lib     
  4. }     
  5. symbian:LIBS +=      
  6. MMP_RULES += "LIBRARY           BaseClass.lib"    
  7. win32 {  
  8. LIBS += -L BaseClass.lib  
  9. }  
  10. symbian:LIBS +=   
  11. MMP_RULES += "LIBRARY           BaseClass.lib"  

此后便是简单的拷贝,拷贝方式和资源拷贝没什么区别。注意的是:如果您的dll都是工程编译过程中生成的,那就不需要拷贝了。

2、对于真机版本:

也是分资源拷贝和dll拷贝。拷贝方式和上述不同。

(1)对于资源文件的拷贝:

  1. view plaincopy to clipboardprint?  
  2. symbian: {       
  3.     LANGUAGEFILE.pkg_postrules = "\".\language\language.dat\"-\"!:\resource\apps\qtqt\language.dat \" "                              
  4.     DEPLOYMENT += LANGUAGEFILE      
  5. }    
  6. symbian: {    
  7.  LANGUAGEFILE.pkg_postrules = "\".\language\language.dat\"-\"!:\resource\apps\qtqt\language.dat \" "                           
  8.     DEPLOYMENT += LANGUAGEFILE   
  9. }  

(2)对于dll动态库的拷贝:

  1. view plaincopy to clipboardprint?  
  2. symbian: {               
  3.     QTLOGDLL.sources =  \epoc32\release\gcce\urel\QtLog.dll                        
  4.     QTLOGDLL.path = \sys\bin     
  5.     DEPLOYMENT += QTLOGDLL     
  6. }    
  7. symbian: {            
  8.     QTLOGDLL.sources =  \epoc32\release\gcce\urel\QtLog.dll                     
  9.     QTLOGDLL.path = \sys\bin  
  10.     DEPLOYMENT += QTLOGDLL  
  11. }  

如果你用的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 这是地址。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-28 13:12:07

Qt 调用 DLL DLL

2011-06-08 13:45:44

Symbian Qt

2011-06-24 09:01:20

Qt QLibrary dll

2011-06-16 16:21:06

Qt Symbian FAQ

2010-07-22 09:25:21

Symbian开发

2011-06-27 15:22:01

Nokia Qt SDK

2011-06-16 14:28:08

Qt Symbian 文件

2011-06-16 14:55:04

2011-06-16 15:59:40

Qt Symbian

2011-06-16 15:17:16

2011-04-02 09:17:38

2010-10-22 10:02:14

诺基亚Qt开发者

2011-05-03 09:14:45

QtOvi商店Symbian

2011-06-15 17:08:31

Qt Symbian 切换

2010-07-12 09:43:38

Symbian开发

2010-05-23 11:13:53

Widget开发

2011-06-28 14:27:38

Qt Qt For Sym

2011-06-16 15:36:56

Qt Quick Symbian

2011-06-16 08:46:17

Qt Symbian 手机

2011-06-30 09:46:01

QT 显示视频 linux
点赞
收藏

51CTO技术栈公众号