详解Qt For Symbian资源和DLL的拷贝
创始人
2024-07-31 22:30:18
0

当一个程序需要加载使用很多资源时:我们需要将这些资源都拷贝到真机中。比如:我们要播放几个声音文件,需要将声音文件给拷贝到真机中。类似的:程序可能还需要很多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 这是地址。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...