2016-09-02 5 views
3

Qtのリソースシステム(基本的には、これらのファイルのバイナリバイト内容のcharの束を含むC++ソースファイルにプリコンパイルされたファイルのリストを含むxmlを提供したいと思います。バイナリにコンパイルされたもの)、純粋なC++です。ソースファイルにファイルの正確な(バイナリ)内容をコンパイラに貼り付ける完全な標準準拠の方法はありますか?

だから私は、可能な限りでさえも、最初とほとんど必要条件ではないと思いますか?

バイナリファイルをオブジェクトファイルにコンパイルできますか?

私は、C++ 11の生の文字列リテラルで別のファイルを#includeすることはできないことを知っていますが、これを回避する方法があるかもしれません。私は、プリコンパイルのステップを省略したいと思います。方法はありますか?

最悪の場合、リンカスクリプトとこれらのバイトにアクセスするコード内のいくつかのブードゥーがこの機能を実現するかもしれませんが、プリコンパイルのステップよりも優れているかどうかはわかりません(確かにもっと透明です...)。

+4

[ファイルリテラル](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0373r0.pdf)の提案があります。 – chris

+1

'xxd -i some_file'は、完全な標準準拠のuchar配列定義と、符号なしint長変数を生成します。 – PSkocik

+0

これは、バイナリフォントやイメージ(組み込みシステムで使用されているような)などのオブジェクトを埋め込むのに適しています。 –

答えて

2

それが(確かにたくさんより透明である...)プリコンパイル・ステップよりも良くなるかどうかはわかりません。

^^^^行く方法(強調する鉱山)です。

標準に準拠した#includeのバイナリファイルがコードに直接書き込まれていません。

あなたは

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

、その最後に含めるようなことにそのバイナリファイルを変換するツールを持っている必要があります。

単純なpythonスクリプトなどはうまくいくでしょう。

+0

または単純なC++コード:) – lorro

+0

@lorroあなたは実行時にリソースファイルを読むことを意味しますか? –

+0

翻訳ツールはPythonだけでなくC++でも書けます。結局のところ、C++コンパイラがあることを確信できます。 – lorro

関連する問題