リソースファイルの書き方は?

解決


nakano  2010-12-31 21:48:31  No: 72155  IP: [192.*.*.*]

アイコンを表示しようと思い、
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を使っても同じように出力されます。
どのようにすればエラーが出なくなるのか教えてください。

編集 削除
nakano  2011-01-01 16:16:27  No: 72156  IP: [192.*.*.*]

追記
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 を既定値としてサポートしていません
というエラーが出ます。

編集 削除
瀬戸っぷ  2011-01-02 01:47:38  No: 72157  IP: [192.*.*.*]

コンパイラ(環境)が何で、コマンドラインなどにどう指定されているのか…が不明なのですが…。

手元のVS2005Stdで、.rcファイルにエラーがある場合は下記のようになります。
.\resource.rc(125) : error RC2135 : file not found: Resource\MAIN5.ICO
エラーコードはRCxxxxです。

>resource.rc(2) : error C2059: 構文エラー : '定数'
のように、Cxxxxになるということは、Cコンパイラに食わせていませんか?
.rcファイルは普通はC/C++ソースではありませんから食中りも起こすかと。

編集 削除
nakano  2011-01-02 16:24:21  No: 72158  IP: [192.*.*.*]

コンパイラはvc++2008です。
では、Cコンパイラ以外に処理させるにはどうすればいいのでしょうか?

編集 削除
nakano  2011-01-02 17:18:41  No: 72159  IP: [192.*.*.*]

やり方がよく分からなかったのでつい質問してしまいましたが、分かりました。
ふと、もしかしたらvc++が自動で作るwindows フォームアプリケーションでもincludeしていないかもしれないと思い、ファイルを検索してみましたが、見つからないので、includeをコメントアウトしてみると、ちゃんとコンパイルできました。
どうやら、すべての必要なファイルをincludeしなければならないと考えていたのがエラーの原因だったようです。
まさかincludeしなくてもよかったとは…
瀬戸っぷ様、アドバイスありがとうございました。

編集 削除
瀬戸っぷ  2011-01-03 00:25:15  No: 72160  IP: [192.*.*.*]

ええっと…

C/C++のソースファイルに.rcファイルをインクルードした…ということですか?
Visual Studioなら普通にプロジェクトに追加すればよろしく処理してくれるはずですが。
リソースコンパイラ(rc.exe)で処理されます。

C/C++の方にインクルードが必要なのは、.rcでIDなどを数値で設定している場合に定義されているヘッダファイルだけです。

編集 削除