2016-07-15 4 views
0

私はCode :: Blocksを使用しています。プログラムのアイコンをコンパイルして残りのプログラムとリンクしたいと思います。アイコンファイルはicon.pngというPNGイメージで、ワークスペース内のプロジェクトフォルダの「その他」フォルダにあります。私はそれを右クリックし、オプションメニューの "ファイルのコンパイル"と "リンクファイル"にチェックを入れました。場合には、これは少し不明確である、私は私がやった正確に何を示しているスクリーンショット作った:とにかくCode :: Blocksで画像をコンパイルしてリンクする方法

screenshot

を、問題は、コンパイラは私に「そのようなを言わないエラーメッセージを与えることですファイルまたはディレクトリー "と呼びます。 「ファイルをコンパイル」にチェックして「リンクファイル」にチェックを入れても、コンパイルは正常に動作しますが、イメージはコンパイルされません。

エラーメッセージを受け取らずにイメージファイルをコンパイルする方法を知りたいと思います。最初

+1

イメージファイルはコンパイルしないでください。C/C++コンパイラはCおよびC++のみをコンパイルします。 PNGでない(またはその他の画像) – Toby

+0

@Tobyそれは不可能であるか、それが推奨されないことを意味しますか? –

+0

私は同じ問題を抱えていました - CodeBlocksのCプログラムに実行可能アイコンを追加する方法 - と私はここで答えました:https:/ /私は同じ問題を抱えていました。 /stackoverflow.com/q/49164595/2441026 – user136036

答えて

4

レッツ・アップ明確な誤解::)

コンパイルは、マシンコードを含むオブジェクトファイルにあなたのソースコードを回す行為です。 をリンクすると、これらのオブジェクトファイルの間の依存関係が解決され、使用可能な実行可能ファイル/ライブラリが出力されます。

したがって、画像をコンパイルまたはリンクするのは意味がありません。


あなたのプログラムに画像を取得するためのコースのいくつかの方法があります。

  • がアーカイブとしてあなたのプログラムを配布して、ファイルを使用してIO
  • バイト配列に画像を変換し、でその場所Cファイル。 xxd -iコマンドはそれだけを実行します
  • これをオブジェクトファイルに変換してリンクします。 this question

あなたが望むのは、ファイルマネージャにアイコンとその場所があるということです。ファイルマネージャーは、バイト配列や余分なセクションについて知りません。

Windowsでは、PE実行可能ファイルには、あらかじめ定義された.rsrcセクションを含めることができます。この中には、使用するアイコンを指定できるものがあります。 resource fileと書くと、特別なコンパイラによってリンクされたオブジェクトファイルにコンパイルされます。 MinGWを使ってこれを行うことについてはanswerです。

関連する問題