如何在c++ VS2015控制台应用程序中嵌入配置文件,而不是硬编码为const数据
How to embed config files in C++ VS2015 console application instead of hard-code as const data?
关于简单地将其保存为const数据或将其转换为二进制数据而不提供详细信息,有很多答案。
我看过这个:如何将文件嵌入到可执行文件中?
我不喜欢将配置文件转换为const数据。
如何在编译时将配置文件嵌入exe,但不在exe旁边。
需要详细步骤。
谢谢。
windows特有的方法是将配置文件作为资源嵌入到可执行文件中:
-
在头文件中为资源定义一个标识符,例如
resource.h
:#define CONFIG_FILE_RESOURCE_ID 1
-
添加一个.rc文件到你的项目中,其中包含以下行:
#include "resource.h" CONFIG_FILE_RESOURCE_ID RCDATA "config.txt"
,其中
config.txt
是要嵌入的文件的名称。RCDATA
为资源类型(自定义二进制数据)。或者,如果您的Visual Studio版本附带
-
要从程序中读取资源,必须:
- 调用
FindResource(NULL, MAKEINTRESOURCE(CONFIG_FILE_RESOURCE_ID), RT_RCDATA)
获取资源句柄 - 调用
LoadResource(NULL, hrsrc)
将资源句柄hrsrc
转换为HGLOBAL
。 - 使用
LockResource
和SizeofResource
函数获取数据指针和嵌入文件的大小
您可能必须提供实际的模块/实例句柄而不是
NULL
,特别是如果您的代码在DLL中 - 调用
你必须手动添加设置,因为visual studio不知道如何自动处理配置文件。如果我们不手动操作,配置文件将不会被复制到输出目录。
转到项目属性->配置属性->构建事件-> post构建事件并将命令行更改为:
复制app.config " $(定位路径). config "
之后,您必须从system.configuration添加一个新的引用。找到项目属性->公共属性->引用->添加新的引用-> .net -> system. configuration然后从project -> new ->配置文件
我知道你想创建自我修改的exe文件,将存储配置。作为一个简单的答案,如果不破解页面保护,你就无法做到这一点。
这里和这里你可以找到一些有用的信息。相关文章:
- 使用已使用 java 编码的 openssl 解码数据
- 在CRC-16 CCITT中将数据从二进制解码为文本,我应该输入一个码字,使用CRC生成器进行编码
- 解码 c++ 中以 base64 编码的大量数据
- 从编码域中的 MPEG 文件中读取元数据
- 如何在65536字节上编码二进制数据到C 上的WebSocket帧
- 使用ffmpeg中的muxing读取编码数据
- 使用 UDP 协议从 Windows 套接字发送到 Qt 套接字的网络数据包上的结构编码和解码
- 运行长度编码算法[数据压缩].
- 如何使用FFMPEG与C拦截编码的视频数据
- c++如何从硬编码结构中获取数据
- 平面缓冲区:使用 add_myTable(表) 对数据进行编码
- 16字节对齐AAC编码数据
- Windows的unicode数据类型使用什么unicode编码(UTF-8、UTF-16等)
- 如何使用Qt处理JSON中的编码西里尔字母数据
- 对于良好的编码实践,如果我们已经在方法1中验证并且方法1将数据传递给方法2,我们是否仍然需要在方法2中再次验证数据?
- 在C 中编码希伯来数据
- FFmpeg:编码PCM 16音频数据分配错误
- 跨平台UTF-8字符文件数据编码/解码
- Cocos2d-x-从精灵或纹理数据编码base64字符串
- unicode或任何其他编码数据是如何存储在内存中的?(win32)