是否有完全符合标准的方法使编译器在源文件中粘贴文件的确切(二进制)内容?

时间:2016-09-02 19:52:05

标签: c++ c++11 c++14

我想提供Qt资源系统的易用性(基本上是一个包含文件列表的xml,它被预编译成一个C ++源文件,其中包含一堆char个二进制字节内容的数组。这些文件,在纯C ++中编译成二进制文件。

所以我想知道,这是第一个也是几乎唯一的要求,即使在可能的情况下也是如此?

我可以将二进制文件编译成目标文件吗?

我知道在C ++ 11原始字符串文字中#include另一个文件并不是简单的可能,但也许有办法解决这个问题。我想抛弃预编译步骤。有办法吗?

在最坏的情况下,可能是代码中的链接器脚本和一些voodoo访问这些字节可以使这个功能正常,但我不知道这是否比预编译步骤更好(这当然更透明。 ..)。

1 个答案:

答案 0 :(得分:2)

  

但我不知道这是否比预编译步骤更好(这当然要透明得多......)。

^^^^这是要走的路(强调我的)。

我没有看到标准符合#include二进制文件的内容直接进入您的代码。

您需要一个可以将该二进制文件转换为

的工具
uint8_t myBinaryData = { 0x00, 0xfb, 0x42, /* ... */ }

并最终包括在内。

简单的python脚本左右会很好。