纯资源DLL编写 及相对路径问题解决

Visual Studio.net 2005

(1)C++ Project à Win32 Project

(2)选择Application type中的DLL选项,同时选上Additional options中的Empty project

点击Finish

然后,为步骤(1)(2)建立的PureResource项目添加资源文件:

 

(4)DLL分为带有入口函数 没有入口函数两类。

DLL带有入口函数(DLLMain),主要用来执行初始化和清除工作,在DLLMain被首次被装载进进程地址空间和freelibrary的时候被调用,也可能在进程中创建线程和退出线程的时候被使用 

没有入口函数的DLL,也即该DLL没必要加载至进程(内存)中,而是直接把该DLL”当成一个文件夹,里面有很多可访问的文件。(纯资源的DLL就没有必要加载到进程中)

Windowsres://C:/WINDOWS/system32/shdoclc.dll/link.gif(可以用IE直接浏览到link.gif图片)

设置DLL为没有入口函数:

打开PureResource项目的属性设置

Linkerà Advanced à”No Entry Point”项设置为”Yes(/NOENTRY)”

 

(5)添加资源

点击”Import”

选择文件,D:/rentaoshu/resPureResourceDLL/PureResource/images/bgImg/xiangxi.JPG,

第一次添加资源时,如果资源类型(Resource type)没有,则会弹出:

Resource type中输入”images”(上图红色框圈中)

注意:此处必须输入”images”,要跟路径 中的"images" 同名(看完后面就清楚了,COME  ON…)

 

(6)编译PureResource项目,会生成PureResource.dll,将PureResource.dll用工具Resource Hacker打开,会看到:

上图中”IMAGES”即为步骤(5)中,Resource type中输入的”images”,这时,可以通过地址” res://D:/rentaoshu/resPureResourceDLL/PureResource/Release/PureResource.dll/images/101”IE中看到:

注意红色框中的”images/101”Resource Hacker中看到的IMAGES à 101 相对应。

但我们实际图片的路径为D:/rentaoshu/resPureResourceDLL/PureResource/images/bgImg/xiangxi.JPG,我们期望通过在IE中输入“res://D:/rentaoshu/resPureResourceDLL/PureResource/Release/PureResource.dll/images/bgimg/xiangxi.jpg”就能看到上图。而且在我们的应用程序代码中也期望通过“images/bgImg/xiangxi.JPG”来访问xiangxi.JGP,而不是“images/101”。(这时你可能会有疑问:101是怎么出来的?)

 

(7)解决方案

Visual Studio.net中打开项目PureResource的资源文件PureResource.rc

其中有一行代码:

IDR_IMAGES1          images           "images//bgImg//xiangxi.JPG"

即我们添加的资源图片xiangxi.JPG

同时,打开resource.h,可以看到代码:

#define  IDR_IMAGES1                 101

这里有个“101”,由此,问题变得简单了。(看出来了吗?)

将“#define  IDR_IMAGES1              101中的“101”改为“bgImg/xiangxi.JPG”,然后编译PureResource项目,将新生成的PureResource.dllResource Hacker打开:

可以看到,之前“101”变为了“BGIMG/XIANGXI.JPG”。

这时在IE中输入如下地址:

res://D:/rentaoshu/resPureResourceDLL/PureResource/Release/PureResource.dll/images/bgimg/xiangxi.jpg”,出现

OK!大功告成!

注意:有时可能会出现如下现象:

这时,可以在IE中输入本地文件地址“D:/rentaoshu/resPureResourceDLL/PureResource/images/bgImg/xiangxi.JPG(没有res://)  来验证图片源是否本来在IE中就不可见。

 

另外值得一提的是:
当将 resource.h 中代码:
#define  IDR_IMAGES1              101
修改 #define  IDR_IMAGES1         bgImg/xiangxi.JPG 后,关闭 resource.h 或者关闭 Visual Studio.net
#define  IDR_IMAGES1          bgImg/xiangxi.JPG 可能又会自动变为:
#define  IDR_IMAGES1         101
怪哉!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值