创建纯资源 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;
}
标签:hDll,return,stream,步骤,DLL,xx,hrsRC,编写 From: https://blog.51cto.com/u_15487030/7522627