资源封装进dll
有时候开发一个dll,需要使用到模型资源,传统的做法都是放到特定地方去加载,或者放到服务器上去加载。
虽然前者方便,但资源与组件分离,常常会发生资源与控件不匹配的问题出现。
后者就更麻烦了,修改的时候通常需要加解密,上传下载。不仅无端增加了网络代码,还增加延迟。
这时,如果将模型资源打包进dll,将省去下载相关代码,交互也变得极其简单。
过程如下:
一、添加数据、资源
在resource(资源)中 通过 “Add resource -> Import...”选择需要添加的 数据/资源,其中的 resource type 可以自己命名。
二、访问数据、资源
使用FindResource,LoadResource查找并加载资源。这与从文件中加载模型的方式区别较大,但在调用CreateStreamOnHGlobal 获取到流之后的操作便相同了。
传统的调用CreateFile、ReadFile、CreateStreamOnHGlobal 即可完成文件到流的转换。需要注意使用GlobalLock、GlobalUnlock。
这里调用GetModuleHandleEx(如果是本dll中资源则可以省去)、FindResource、LoadResource、CreateStreamOnHGlobal即可完成流获取。