VC++6.0使用Resource文件来生成必备的支撑文件

目的:(1)使用exe自己资源文件来创建支撑的dll文件或者配置文件,这样可以在开发绿色软件的时候只需要拷贝一个exe可执行文件就可以独立运行。

(2)防止误删配套文件导致exe应用无法执行。

(3)生成预置配置文件方便使用。

思路:把库文件导入到资源文件,在程序运行时检查是否存在,否则生成,做到一个exe文件就可以独立运行。

第一步:建立一个MFC Dialog based 静态链接库(静态库不依赖其他库)MFC应用

第二步:导入资源文件

第三步:编写代码,在构造函数加入代码

CRc2fileApp::CRc2fileApp()
{
	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
	HINSTANCE hInst = (HINSTANCE)GetModuleHandle(0);
    HRSRC hResource = FindResource(hInst, MAKEINTRESOURCE(IDR_DLL1), _T("DLL"));
    if (hResource == NULL) {
        MessageBox(NULL, _T("Cannot find resource"), _T("Error"), MB_OK | MB_ICONERROR);
        return;
    }
	
    DWORD dwSize = SizeofResource(hInst, hResource);
    HGLOBAL hGlobal = LoadResource(hInst, hResource);
    if (hGlobal == NULL) {
        MessageBox(NULL, _T("Cannot load resource"), _T("Error"), MB_OK | MB_ICONERROR);
        return;
    }
	
    LPSTR lpDllBin = (LPSTR)LockResource(hGlobal);
    if (lpDllBin == NULL) {
        MessageBox(NULL, _T("Cannot lock resource"), _T("Error"), MB_OK | MB_ICONERROR);
        return;
    }
	

    // 可以将数据写入文件
    FILE *fp = fopen("sqlite3.dll", "wb");
    if (fp == NULL) {
        MessageBox(NULL, _T("Cannot open file"), _T("Error"), MB_OK | MB_ICONERROR);
        return;
    }
 
    fwrite(lpDllBin, dwSize, 1, fp);
    fclose(fp);
 
    FreeResource(hGlobal);
    return;

}

结果:

完整代码上传到资源,欢迎下载。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值