www.Walzer.cn - 原创技术博客

专注于智能手机上的APP和BSP开发。
所谓高手,也就是熟悉别人制定的游戏规则、并且能在规则内跳舞的人。
posts - 59, comments - 435, trackbacks - 1, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

在上个项目里,我把应用的所有资源文件,也就是所有图片全部放在和EXE同级的目录里,结果造成了下面这些问题:

(1) 每个应用都对应10张以上的图片,结果就得在CE的platform.bib里管理几十个文件。

(2) 工业设计还经常根据营销的要求更换图片,而图片无法用Beyond Compare或者代码管理工具来比较,这多次导致了工程师手里的图片和从BUILD SERVER上RELEASE出来的程序图片不一致。

做集成的时候就特别恨这事情。

这次项目我吸取了教训,每个应用都把图片全部打包到各自的resource.rc里,编译出来就是一个几百K的.res文件,最后全部LINK到EXE里头,这样每个应用只需要提交一个EXE即可,系统集成时的工作量就小很多了。

但是到项目后期我走了个极端,希望能把TTF字体资源和音频文件全部打包到RES里面。这个从技术实现上并不难,但做完后就出问题了。

比如我打包个1M的WAV文件,最后全部LINK到EXE里面,运行时EXE整个映射到进程空间里,这造成不论当前是否调用WAV文件,始终有1M内存被WAV占着了,亏死。

结论:应该只把程序启动时立刻就要用到的资源打包到RES里面,而某些特定条件下才会用到的资源就放在EXE外部,在程序里通过文件系统调用。

结论的结论:无聊,too simple, sometimes naive


 

Feedback

#1楼    回复  引用    

2008-03-10 11:49 by bsxy [未注册用户]
楼主这个问题最好再确认一下,exe整个映射后是否都提交了物理内存,如果不是的话,相关资源一开始不会占用很多物理内存,而是在访问时才会以页去加载.据我所知,dll是不会在映射后提交全部内存的,都是执行到哪加载到哪,当然边界还是按页的.

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: