Win32 自定义本地资源dll

前言

这里是记录我的经验,没啥技术含量的,小白这厢有礼了

为何需要将部分资源做成dll

最近在写一个服务框架,这个服务框架是给别人用于开发服务用的.开发人员使用服务的时候,需要使用一些认证用的授权文件,每个服务都需要有个授权文件.此时,不幸的是,我的框架里面也用到了一些授权文件,用来嵌入部分具体的系统服务.那么问题来了,如果韩梅梅使用我的框架,需要把我的授权文件拷走,配置一些路径然后才能进行她的后续工作,同样,如果李屁屁使用框架,他也需要做同样的工作.这将带来极大的不方便.加入我把所有的资源做成dll,那么将会省很多事情.
1.我使用什么授权文件,二次开发人员不需要关心
2.省去了很多配置工作
3.资源修改方便

如何做?

这个比较简单,网上资料一坨一坨的,简单的记录一下:

创建一个win32
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

然后直接编译就行了.这里要注意resource.h里的名称记录一下,因为使用库的地方要用到这个里面的部分资源名称,这里的是:

#define IDR_TOKEN_V                     101

~over

如何用?

直接上代码

const int IDR_TOKEN_V = 101; // 这里要和库保持一致,至少101要不能变
...
// 找到这个库
HINSTANCE hd=LoadLibrary(L"operKingRc.dll");
if( !hd )
{
    cout<<"[*] operKingRc.dll 加载失败.."<<endl;
    Sleep(10000);
    exit(0);
}
// #define IDR_TOKEN_V  
HRSRC hRes = FindResource(hd, MAKEINTRESOURCE(IDR_TOKEN_V), _T("TOKEN"));
DWORD len  = SizeofResource(hd, hRes);
HGLOBAL hg = LoadResource(hd, hRes);
LPVOID lp = (LPSTR)LockResource(hg);
FILE* fp;
if( fp = fopen("token.v","w+") )
{
    char* cp = (char *)lp;
    for(int i = 0; i < len; i++)  
    {
        fputc(*cp++,fp);
    }
}
fclose(fp);
FreeResource(hg); 
...

最后把dll拷贝到程序运行目录下,即可.

全文结束

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值