アイコンを表示しようと思い、
resource.rcに
#include "resource.h"
ID_ICON_1 ICON "ExeIcon.ico"
ID_ICON_2 ICON "WindowIcon.ico"
resource.hに
#define ID_ICON_1 100
#define ID_ICON_2 101
と書いたのですがコンパイルすると
resource.rc(2) : error C2059: 構文エラー : '定数'
というエラーが出ます。
書き方が間違っているのでしょうか?
でもResEditを使っても同じように出力されます。
どのようにすればエラーが出なくなるのか教えてください。
追記
resource.hに何も書かないと
resource.rc(2) : error C2146: 構文エラー : ';' が、識別子 'ICON' の前に必要です。
resource.rc(2) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
resource.rc(2) : error C2143: 構文エラー : ';' が '文字列' の前にありません。
resource.rc(2) : error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
というエラーが出ます。
コンパイラ(環境)が何で、コマンドラインなどにどう指定されているのか…が不明なのですが…。
手元のVS2005Stdで、.rcファイルにエラーがある場合は下記のようになります。
.\resource.rc(125) : error RC2135 : file not found: Resource\MAIN5.ICO
エラーコードはRCxxxxです。
>resource.rc(2) : error C2059: 構文エラー : '定数'
のように、Cxxxxになるということは、Cコンパイラに食わせていませんか?
.rcファイルは普通はC/C++ソースではありませんから食中りも起こすかと。
コンパイラはvc++2008です。
では、Cコンパイラ以外に処理させるにはどうすればいいのでしょうか?
やり方がよく分からなかったのでつい質問してしまいましたが、分かりました。
ふと、もしかしたらvc++が自動で作るwindows フォームアプリケーションでもincludeしていないかもしれないと思い、ファイルを検索してみましたが、見つからないので、includeをコメントアウトしてみると、ちゃんとコンパイルできました。
どうやら、すべての必要なファイルをincludeしなければならないと考えていたのがエラーの原因だったようです。
まさかincludeしなくてもよかったとは…
瀬戸っぷ様、アドバイスありがとうございました。
ええっと…
C/C++のソースファイルに.rcファイルをインクルードした…ということですか?
Visual Studioなら普通にプロジェクトに追加すればよろしく処理してくれるはずですが。
リソースコンパイラ(rc.exe)で処理されます。
C/C++の方にインクルードが必要なのは、.rcでIDなどを数値で設定している場合に定義されているヘッダファイルだけです。