编写、引用资源DLL步骤

创建纯资源 DLL 时要求 /NOENTRY 选项。(VS链接选项中设置无入口)

使用该选项防止 LINK 将 _main 的引用链接到 DLL 中。


VC版:

1、向导生成一个DLL名为456

 

2、新建xx.h  内容:

     #define PNG1   10000

 

     新建一个TEXT文档

     编辑内容如下:

     #include "xx.h"

     //编辑需要的资源(本示例为自定义类型,标准类型可google)

     如:PNG1 PNG "c:/123.png"

     保存为xx.rc

 

 

3、将xx.rc、xx.h添加进DLL工程文件

 

4、编译

 

5、引用DLL资源 ,其实主要就是FindResource LoadResource LockResource三个API的应用

// TODO: Add extra cleanup here HMODULE hDll=LoadLibrary("456.dll"); if(!hDll) return ; HRSRC hrsRC=FindResource(hDll,MAKEINTRESOURCE(PNG1),"PNG"); if (!hrsRC) { int err=GetLastError(); return ; } HGLOBAL hgb=LoadResource(NULL,hrsRC); if (!hgb) { return ; } LPVOID Buf=LockResource(hgb); FILE* fp=fopen("c://idr.png","wb+"); if (fwrite(Buf,SizeofResource(NULL,hrsRC),1,fp)==-1) { return ; } fclose(fp); FreeLibrary(hDll); 

 


 

BCB版:

BCB将此封装成一个流类,直接引用此类即可,示例:

 

1、新建一个TEXT文本 编辑 E1 EXEFILE "c:/123.exe"

    保存为xx.rc

 

2、将此RC文件添加进工程

 

3、引用:

 

 

TResourceStream* stream; try { stream=new TResourceStream((UINT)HInstance,"E1","EXEFILE"); // if(stream) { stream->SaveToFile("c:/456.exe"); } } __finally { delete stream; }
 

 

 

 

你可能感兴趣的:(Windows)