c++ - 获取文件数据预处理器宏
问题描述
我在一个解决方案中有两个 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
编辑:这些答案将不起作用。
外部链接不是我想要的,除非有办法直接在文件中进行。
这不是原始的 C/C++,它需要一个外部程序。
该文件是 PE,因此不能包含在
STR(
)
.
解决方案
没有预处理器工具可以让您读取二进制文件。但是没有什么能阻止你编写一个小程序甚至是 shell 脚本来读取二进制文件并输出 C 代码,该 C 代码会将char
数组初始化为文件的内容。
然后你的程序可以#include
生成文件。因此,您需要做的就是将您的转换程序添加到构建过程中。
推荐阅读
- azure - 将 CreateTableIfNotExists 或 DoesTableExist 与 Azure 表存储一起使用是否有任何开销?
- laravel - Laravel Voyager symlink():没有这样的文件或目录 CPanel
- fortran - 如何使用千位分隔符和小数分隔符逗号将数字读入 fortran,例如 123.456.891.234,56
- r - R中的顺序无关字符串匹配
- css - 未应用 Bootstrap 4 CSS
- javascript - 数组中的嵌套对象 - 对象破坏 es6
- javascript - 使用 Javascript 将 UTM 参数传递给按钮 URL
- pine-script - 交易视图 - 高斯趋势线
- javascript - 我正在尝试找到一种方法来打印外部 URL 的正文。我已经可以正确打印标题
- php - wait() 调用 RuntimeException 错误代码接收