0
点赞
收藏
分享

微信扫一扫

编写、引用资源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;
    }

 

 

举报

相关推荐

0 条评论