如何在c++ VS2015控制台应用程序中嵌入配置文件,而不是硬编码为const数据

How to embed config files in C++ VS2015 console application instead of hard-code as const data?

本文关键字:编码 数据 const 配置文件 c++ VS2015 控制台 应用程序      更新时间:2023-10-16

关于简单地将其保存为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版本附带

  • 要从程序中读取资源,必须:

    1. 调用FindResource(NULL, MAKEINTRESOURCE(CONFIG_FILE_RESOURCE_ID), RT_RCDATA)获取资源句柄
    2. 调用LoadResource(NULL, hrsrc)将资源句柄hrsrc转换为HGLOBAL
    3. 使用LockResourceSizeofResource函数获取数据指针和嵌入文件的大小

    您可能必须提供实际的模块/实例句柄而不是NULL,特别是如果您的代码在DLL中

你必须手动添加设置,因为visual studio不知道如何自动处理配置文件。如果我们不手动操作,配置文件将不会被复制到输出目录。

转到项目属性->配置属性->构建事件-> post构建事件并将命令行更改为:

复制app.config " $(定位路径). config "

之后,您必须从system.configuration添加一个新的引用。找到项目属性->公共属性->引用->添加新的引用-> .net -> system. configuration

然后从project -> new ->配置文件

创建配置文件

我知道你想创建自我修改的exe文件,将存储配置。作为一个简单的答案,如果不破解页面保护,你就无法做到这一点。

这里和这里你可以找到一些有用的信息。