私のCアプリケーションは、コピーするためにいくつかのファイルに依存しています。ファイルはスタンドアロンファイルとしてではなく、実行可能ファイルに含まれますか?静的にリンクする必要がありますか?重要な場合は、EclipseCDTを使用しています。
3 に答える
ファイルデータを実行可能ファイルにリンクする方法はいくつかあります。Windowsのようなプラットフォームでは、データを「リソース」として実行可能ファイルにリンクし、それらのリソースにアクセスするためのAPIを提供できます(これは、アイコンやその他のオブジェクトがWindows実行可能ファイルにバインドされる方法です)。プラットフォームがそれをサポートしている場合、これはおそらくそれを行うための最良の方法です-それのサポートはIDEに直接組み込まれています。
下位レベルでは、リンカを使用して、ファイルをアドレス指定可能なオブジェクトとして実行可能ファイルに直接リンクできる場合があります。
そして最後に、いくつかの組み込みプラットフォームのようなより原始的なシステムを扱っている場合は、ファイルをCバイト配列のソースに変換するものを介してファイルを実行できます。
特別なことをしない限り、いいえ、ファイルは実行可能ファイルに含まれません。アプリケーションでテキストファイルを配布できない理由はありますか?
ファイルを実行可能ファイルにベイクする場合は、定数文字列でファイルをベイクできます。
const char myTextFileData[] = "the text of the file goes here";
もちろん、テキストファイルをCソースファイルに前処理する必要があります(引用符、円記号、改行、およびその他の制御文字を適切にエスケープすることを忘れないでください)。objcopy
または、ファイルデータをオブジェクトファイルに直接変換してから、そのオブジェクトファイルを実行可能ファイルにリンクするなどのツールを使用することもできます。
いいえ。実行可能ファイルには、コンパイラとリンカからの出力のみが含まれます。プログラムに必要な補助ファイルは、個別にパッケージ化する必要があります。