Windows下C++将各种资源文件引入exe文件(即无需携带很多res资源包)
- 环境:Visual Studio2010
- 语言: C++
- 实际操作:
1.将文件导入资源文件
资源文件中右键—添加----资源
选择导入—导入资源----并设置资源类型。资源类型命名随意,但是最好还是要和实际文件的类型一致比较好
- 导入成功后,在Resource.h文件中,会产生相应的资源id,每个资源id对应的是一个完整的文件—即你导入的文件,准确的来说,你导入的文件,实质上,是被转成字节码保存起来的。有字节码,其实就可以生成该文件了,这是原理的问题,作为补充。
- 复制下列代码 到您的主文件cpp中
bool ExportToFile(const std::wstring& exportFilePath, const void* pBuffer, DWORD bufferLength)
{if (pBuffer == NULL || bufferLength <= 0){return false;}HANDLE hFile = ::CreateFile(exportFilePath.c_str(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if (hFile == NULL){return false;}DWORD writetem = -1;BOOL ret = ::WriteFile(hFile, pBuffer, bufferLength, &writetem, NULL);if (writetem != bufferLength){::CloseHandle(hFile);return false;}::CloseHandle(hFile);return true;
}/**
* exportPath:文件路径,
* resourceId:资源ID :Resource.h中
* 导出资源包转成指定文件
*/
bool ExportRes(const std::wstring& exportPath, DWORD resourceId)
{HINSTANCE m_hInstance = g_hinstance;// "ZIP" 是自定义资源类型,可以自己决定HRSRC hrSrc = FindResource(m_hInstance, MAKEINTRESOURCE(resourceId), _T("ZIP"));if (hrSrc == NULL){return false;}HGLOBAL hGlobalResource = LoadResource(m_hInstance, hrSrc);if (hGlobalResource == NULL){return false;}const void* pResourceData = ::LockResource(hGlobalResource);if (!pResourceData){return false;}DWORD resLength = SizeofResource(m_hInstance, hrSrc);bool ret = ExportToFile(exportPath, pResourceData, resLength);FreeResource(hGlobalResource);return ret;
}
上面的代码是将字节码转成您指定的文件。
其中资源id就是Resouce.h中定义的宏命令
exportPath指的是导出的文件路径
- 调用如下:
直接用即可。 - 运行程序:
可以看出 生成指定文件成功。
Windows下C++将各种资源文件引入exe文件(即无需携带很多res资源包)相关推荐
- Linux下的GCC和Windows下Visual Studio的编译所生成的文件作用
首先先说一下Linux吧因为这也是博主最早接触的编程开发环境所以比较熟悉的! Linux下就说GCC GCC编译如果不指定编译选项的话是一步到位没有额外的后缀名文件! .i文件:.i文件是GCC -E ...
- .pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法
.pages怎么在windows上打开?Windows下打开在Mac中编辑的.pages文件方法 1.最简单的方法是修改后缀名为.zip然后解压,解压后就可以看到一张图片,这个就是文档内容了. 2.更 ...
- Windows编译开源代码方法之关于lame.exe文件的测试及过程
Windows编译开源代码方法之关于lame.exe文件的测试及过程 最终结果(PS:使用markdown不熟悉,记得在井号后面加个空格才能触发) 起因:foobar2000在格式转换中需要lame. ...
- 系统中的obj文件、dll文件、so文件、lib文件、exe文件、vcproj文件、sln文件
1. 源代码(.c等)要经过编译器的编译得到目标代码(.obj),再经过链接器使目标代码和库函数及启动代码合并成一个文件,即可执行文件exe. 2. 生成可执行文件时的链接过程又可根据链接库(动态链接 ...
- 潇洒郎:用cxfreeze打包py文件为exe文件全过程——呕心吐血经验——安装、调试、解决KeyError: 'TCL_LIBRARY'问题、最终成功、打包方便技巧
用cxfreeze打包py文件为exe文件全过程:必须全部看完,正确在后面 注意:当前环境是Play_Craw, pip install cx-freeze 时自然安装到了C:\Users\xiaos ...
- exe4j 打包 jar 文件为 exe 文件(GUI程序)
exe4j 打包 jar 文件为 exe 文件(GUI程序) 1.资源分享 2.把项目打包成 exe 文件 2.1 把项目打包成 jar 包(用 fatjar 打包项目) (1) 把 net.sf.f ...
- Python将py文件生成exe文件
使用PyCham软件运行生成可执行文件后,最完美的就是将py文件生成exe文件,这样可以任意复制移植到其他电脑上,供他人共享. 由于新手初步尝试,自己一个人摸索,遇到了很多坑.这里先给出最简单有效的方 ...
- com文件与exe文件
COM文件是一种可执行程序的内存映象文件,它与只有16位地址线的8位机上的CP/M操作系统下的可执行程序结构相似.在COM程序执行过程中,除了调用DOS功能和 ROM BIOS 功能,以及用户特意安排 ...
- PyInstaller库的使用(py文件转exe文件)及Koch曲线及推广,绘制康托尔集
PyInstaller库概述 将.py源代码转换成无需源代码的可执行文件 意思就是将.py文件转换为.exe文件 PyInstaller库是第三方库 - 官方网站:http://www.pyinsta ...
最新文章
- 如何使自己的程序只运行一次
- 用python爬虫的基本步骤-Python爬虫入门:爬虫基础了解
- 音视频开发基础概述 - PCM、YUV、H264、常用软件介绍
- openfire在windows环境和linux环境下的配置
- Spark _26_Spark On Hive的配置
- 智能市场变革,独辟蹊径的机器人营销
- Linux赋予目录或文件任何人都可以读、写、执行的操作
- php空间 数据库设计,php进阶之数据库设计/ 选择合适的表引擎
- 学习ARM64页表转换流程
- php合成图片系统,php图片合成
- 内存管理有哪几种方式
- python表示倍数的英语句型_5种倍数表达法句型
- inventor 波纹阵列_Inventor装配零部件阵列功能详解
- 回调函数,事件管理器
- cpython-36m-x86_64-linux-gnu.so undefined symbol玄学解决
- 这交互炸了(三):闪屏页是像云一样消失的
- 美通社企业新闻汇总 | 2019.2.27 | 中国大学名次在世界大学排名中继续攀升;吉利2021年发布支持5G量产车型...
- 剑指 Offer 10- I. 斐波那契数列
- javascript中reduce的用法
- mac的safari浏览器如何开启开发者模式