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

news2025/1/20 19:56:13

目的:(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;

}

结果:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汇编语言程序设计-2-访问寄存器和内存

2. 访问寄存器和内存 文章目录 2. 访问寄存器和内存2.0 导学2.1 寄存器及数据存储2.2 mov和add指令2.3 确定物理地址的方法2.4 内存的分段表示法2.5 Debug的使用2.6 【代码段】CS、IP与代码段2.7 【代码段】jmp指令2.8 【数据段】内存中字的存储2.9 【数据段】用DS和[address]实…

傻瓜化备份/恢复K8S集群Etcd数据

前言: 备份重要数据,简化重复操作,让一指禅、点点点也能完成运维任务。 脚本呈现界面如下: 1、查看Etcd版本 rootmaster:~# cat /etc/kubernetes/manifests/etcd.yaml | grep image: | awk {print $2} registry.aliyuncs.com/goo…

企业运维背后的故事:TASKCTL带你了解日常工作与技术演进

今天,作为一名经验丰富、从业多年经常与运维人员打交道的人,我想与大家聊聊运维的日常工作、部门协调以及未来发展,希望能为即将转行或正在从事运维工作的你,提供一些新的视角和启发。 运维的日常工作:挑战与乐趣并存 …

【密评】 | 商用密码应用安全性评估从业人员考核题库(11)

字母频率分析法对()算法最有效。 A.置换密码 B.单表代换密码 C.多表代换密码 D.序列密码 GM/Z4001《密码术语》中,保证信息不被泄露给非授权的个人、进程等实体的性质称为密码的()。 A.真实性 B.完整性 C.机密性 D.不…

LCD和OLED的区别

这里写目录标题 什么是LCD?什么是LED/OLEDLED和OLED的发光原理LCD的缺陷OLED屏幕的优势OLED屏幕的劣势 什么是LCD? LCD 英文全称 Liquid Crystal Display ,中文翻译为液晶显示器。LCD 的构造是在两片平行的玻璃基板当中放置液晶盒&#xff0…

Visual Studio Community : The prerelease has expired

最近使用旧版的离线安装包安装社区版Visual Studio2022(Visual Studio Community 2022),安装完成后显示:The prerelease has expired。使用自己的微软账号登录还是一样的情况,只能强制退出。经过摸索后发现了一个解决方…

tab 滑动小案例

效果&#xff1a; 代码&#xff1a; <template><view class"content"><view class"tab"><view v-for"(item,index) in dataList" :key"index" class"tab_item" click"slideTab(index)">…

爱普生MCU系列语音芯片S1C31D41

随着科技的发展和产品的集成化&#xff0c;语音芯片已经逐渐替代了多种语音设备应用在各场合。语音芯片主要特性是功耗低&#xff0c;抗干扰能力强&#xff0c;外围器件少&#xff0c;控制简单&#xff0c;语音保存时间久(某些语音芯片可以保存内容100年)&#xff0c;掉电不丢失…

java 解决跨域时遇到问题,怎么来做一个跨域环境

今天遇到一个问题&#xff1a; 关于#java#的问题&#xff1a;java 解决跨域时遇到问题&#xff1a;为什么跨域访问时配置的CorsFilter没有进入&#xff1f;直接访问请求地址时进入了配置的CorsFilter 由于没有实际的跨域环境&#xff0c;因此打算在本机建一个跨域环境&#xff…

钉钉对接打通金蝶云星空获取流程实例(宜搭)接口与付款单新增接口

钉钉对接打通金蝶云星空获取流程实例&#xff08;宜搭&#xff09;接口与付款单新增接口 对接系统钉钉 钉钉&#xff08;DingTalk&#xff09;是阿里巴巴集团专为中国企业打造的免费沟通和协同的多端平台&#xff0c;提供PC版&#xff0c;Web版和手机版&#xff0c;有考勤打卡、…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型&#xff1a; 销售报告&#xff1a;4S店需要定期向总部提交销售报告&#xff0c;包括销售数量、销售额、市场份额等关键指标。 库存管理文件&#xff1a;包括车辆库…

HTML满屏漂浮爱心

目录 写在前面 满屏爱心 代码分析 系列推荐 写在最后 写在前面 小编给大家准备了满屏漂浮爱心代码&#xff0c;一起来看看吧~ 满屏爱心 文件heart.svg <svg xmlns"http://www.w3.org/2000/svg" width"473.8px" height"408.6px" view…

SpringBoot设置默认文件大小

1、问题发现 有个需求&#xff0c;上传文件的时候&#xff0c;发现提示了这个错误&#xff0c;看了一下意思是说&#xff0c;文件超过了1M。 看我们文件的大小&#xff1a; 发现确实是&#xff0c;文件超出了1M&#xff0c;查了一下资料&#xff0c;tomcat默认上传文件大小为1M…

什么是工具? 从语言模型视角的综述

24年3月CMU和上海交大的论文“What Are Tools Anyway? A Survey from the Language Model Perspective”。 到底什么是工具&#xff1f; 接下来&#xff0c;工具在哪里以及如何帮助语言模型&#xff1f; 在综述中&#xff0c;对语言模型使用的外部程序工具进行了统一定义&…

天机学堂—项目总览和基建

总览 天机学堂是一个基于微服务架构的生产级在线教育项目。 项目亮点 技术架构 环境搭建 为了模拟真实开发环境&#xff0c;我们准备了一台虚拟机&#xff0c;在其中安装了各种各样的公共服务和组件。 Jenkins 是一个开源的持续集成&#xff08;Continuous Integration&…

【opencv】信用卡号识别实验

实验环境&#xff1a;anaconda、jupyter notebook&#xff08;其它的ide也行&#xff09; 实验用的包&#xff1a;numpy、matplotlib、opencv 实验目标&#xff1a; 识别信用卡的卡号 信用卡图片&#xff1a; 数字模板图片&#xff1a; 一、包引入 import cv2 import matplo…

02-WPF_基础(一)

1、基础 各模块类型 链接&#xff1a;如何&#xff1a;向 Viewbox 的内容应用 Stretch 属性 - WPF .NET Framework | Microsoft Learn WPF基础以及事件绑定与数据绑定的情况&#xff0c;&#xff0c;在学习XAML&#xff0c;数据结构以及一个项目学习平台来练手&#xff0c;网络…

windows10安装WSL2及使用

1、安装 安装步骤见官网&#xff1a;https://learn.microsoft.com/zh-cn/windows/wsl/install-manual 2、调整WSL占用内存和空间 装完WSL后&#xff0c;查看任务管理器时发现vmmem进程占用内存过高。WSL内存默认值是电脑内存的一半&#xff0c;CPU默认值是电脑处理器个数&am…

vue3 中 使用 antd中的select 组件的带搜索框 展开后可对选项进行筛选搜索功能

鼠标进入以后下拉显示&#xff1a; 输入字符串以后&#xff1a; 可以看出对数据进行了筛选。 具体代码&#xff1a; 结构上&#xff1a;<a-selectv-model:value"formState.formFlow"show-searchallowClearplaceholder"输入选择流程":options"op…

生产透明化,交付无烦恼

生产进度总延误 质量把控总失守 计划赶不上变化 沟通不畅易误解 ...... 这些问题可能在一些工厂管理中几乎每天都在上演。 在如今快速变化的市场环境中&#xff0c;企业的生产效率和交付能力成为了衡量其竞争力的关键指标。而要实现高效、准确的生产和交付&#xff0c;透明化的…