在上个项目里,我把应用的所有资源文件,也就是所有图片全部放在和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