首页 > 解决方案 > 获取文件数据预处理器宏

问题描述

我在一个解决方案中有两个 C/C++ 可执行项目。另一个项目需要其中一个项目的输出;将第二个项目想象成某种安装程序(它不是,所以我不需要安装程序项目,但它会像读取第二个项目的输出一样)。

有什么方法可以将第一个项目输出的原始数据转换为编译时可用的数据?我的想法是这样的:

// build order is set so this second project is built after the first is completed

/*c++ constexpr*/ unsigned char ProjectOneOutput[ ] =
    SOME_PREPROCESSOR_MACRO_TO_READ_FILES( PROJECT_ONE_OUTPUT_PATH );

// code that uses ProjectOneOutput goes here

编辑:这些答案将不起作用。

  1. 外部链接不是我想要的,除非有办法直接在文件中进行。

  2. 这不是原始的 C/C++,它需要一个外部程序。

  3. 该文件是 PE,因此不能包含在STR( ).

标签: c++cwindowsvisual-studiovisual-c++

解决方案


没有预处理器工具可以让您读取二进制文件。但是没有什么能阻止你编写一个小程序甚至是 shell 脚本来读取二进制文件并输出 C 代码,该 C 代码会将char数组初始化为文件的内容。

然后你的程序可以#include生成文件。因此,您需要做的就是将您的转换程序添加到构建过程中。


推荐阅读