error RC2104について

このQ&Aのポイント
  • VS2005でC++を用いてWindowsアプリケーションを作成している際に、error RC2104というエラーが発生しました。
  • リソーススクリプトとヘッダースクリプトに特定のコードを追加したことによって、undefined keyword or key nameエラーが発生しました。
  • 試行錯誤したがエラーが解消されないため困っている。ご教授願いたい。
回答を見る
  • ベストアンサー

error RC2104について

いつもお世話になってます。 VS2005でC++を用いてWindowsアプリケーションを作成してます。 今までのリソーススクリプトに   MENUITEM "ヘルプ(&H)", IDM_HELP またヘッダースクリプトに   #define IDM_HELP 600 を追加したところ、以下のようなエラーが出ました。   error RC2104 : undefined keyword or key name: IDM_HELP ------------------------------ Webで調べていろいろ試してみたのですが改善されません。 ソースファイルに   #include <winuser.h> を追加したり、ヘッダーファイルに   #ifdef IDC_HELP   #undef IDC_HELP   #endif   #define IDC_HELP (-1) を追加してもだめでした。 まだまだ未熟な知識ですので、とても困っております。 ぜひご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>またヘッダースクリプトに >  #define IDM_HELP 600 >を追加した RCファイルでincludeしているファイルに追加しましたか? VS2005でリソース追加すると、Resource.hって名前のファイルになるかと思われますが…。 # リソースエディタで追加すれば、defineも正しくやってくれたハズですが… # ExpressEditionなんでしょうか?

mymusic54
質問者

お礼

早いご回答ありがとうございます。 RCファイルでincludeしているファイルに   #define IDM_HELP 600 を追加したところ成功いたしました。 まだまだ勉強が必要ですねー頑張ります。 本当に感謝いたします。 ありがとうございました!

関連するQ&A

  • メニューの書式

    下の終了(&E)という文字を非活性にしたいのですが、リソースでそのようなスタイルっぽいことは指定できるのでしょうか? MENUITEM "終了(&E)", IDM_EXIT, DISABLED のような書式はないのでしょうか? #include "example.h" PROGRAM MENU DISCARDABLE BEGIN POPUP "ファイル(&F)" BEGIN MENUITEM "開く(&A)...", IDM_OPEN MENUITEM SEPARATOR MENUITEM "終了(&E)", IDM_EXIT END POPUP "ヘルプ(&H)" BEGIN MENUITEM "バージョン情報(&A)", IDM_ABOUT MENUITEM "ヘルプを表示(&H)", IDM_HELP END END

  • メニューリソースのオプションのGRAYEDについて

    IDR_MENU1 MENU { POPUP "ファイル(&F)" { MENUITEM "新規作成(&N)",IDM_NEW MENUITEM "終了(&X)",IDM_EXIT,GRAYED } POPUP "ヘルプ(&H)",GRAYED { MENUITEM "バージョン情報(&V)",IDM_VERSION } } このコードでGRAYDに指定しているコマンド"終了"の文字が灰色にならず、選択可能になります。どうしたらGRAYEDの設定が反映されるでしょうか?

  • C++でConvertSidToStringSid関数を使うために、sddl.hを使用したい

    お世話になります。 現在C++ 6.0でソフトを作成しています。 その中でConvertSidToStringSid関数を使うために、sddl.hを使用したいのですが、下記のようなエラーが出ます。 -----------インクルード------------------ #include <stdlib.h> #pragma comment(lib,"netapi32.lib") //////////ここで定義しているつもりです。 #define _WIN32_WINNT 0x0500 #include <windows.h> #include <sddl.h> //////////ここで定義しているつもりです。 #include <tchar.h> #include <lmaccess.h> #include <lmapibuf.h> #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ----------デバックエラー J:\Del.cpp(17) : fatal error C1083: インクルード ファイルがオープンできません。'sddl.h': No such file or directory どのようにすればConvertSidToStringSid関数を使うために、sddl.hを使用できますでしょうか? 何卒よろしくお願いします。

  • C言語でヘッダファイルを自作する

    C言語で#defineを用いてヘッダファイルを作成したのですが、 作成したコンパイルするときにヘッダファイルがオープンできません。 参考にしている資料があるのですが、そこに書かれているサンプルプログラムを 丸ごとコピーして作ったプログラムも同様にヘッダファイルがオープンできない というエラーが出るので、ヘッダファイルを定義する方法そのものが間違っていると 思うのですが、どこが間違っているのでしょうか? よろしければ正しい記述方法もお教えください。 #include <stdio.h> #if !defined SAMPLE_H #define SAMPLE_H wa(int a, int b) { return a+b; } #endif #include "sample.h" int main(){ printf("%d\n",wa(40,70)); return 0; } ヘッダファイルの定義の方法は他にもあるとは思いますが、 今回は#defineを用いた方法でお願いします。

  • 「マクロが再定義されました」と「C1083: include ファイルを開けません。」のエラー

    少しここで質問してもいいのか不安ですが、助言お願いします。プログラミングについてはまったくの初心者です。(C言語見だして十日程度) 環境はXP, Microsoft Visual C++08, DirectX SDK(November 2008)です。 "0からのゲームプログラミング"と言うサイトに沿って勉強してるのですが、 上記サイト:http://www.plustarnet.com/aspil/Programming/ 上記サイトコンテンツの、2D編の"スケルトンプログラム"の項目でスケルトンプログラムをダウンロードし、記事の通りに作成したのですが、次のようなエラーがでます。 c:\documents and settings\USER\my documents\visual studio 2008\projects\samplestg\skeleton\win32\header\stdafx.h(27) : warning C4005: 'UNICODE' : マクロが再定義されました。コマンド ラインの引数 : 'UNICODE' の前の定義を確認してください c:\documents and settings\USER\my documents\visual studio 2008\projects\samplestg\skeleton\header\music.h(18) : fatal error C1083: include ファイルを開けません。'dmusici.h': No such file or directory エラー 4、警告 4 ソースファイルにある4つの.cppそれぞれで出ます。 (1).定義云々と言われる方は(こちらは警告) //#define UNICODE // UNICODE を使用 #ifdef UNICODE #define _UNICODE  ←ここ #endif ここです。MSDNのヘルプを見ると、削除または#undefを使え、だったので、#ifdefと#defineの間に"#undef _UNICODE"を追加した所通りました。(削除でも通りました) ただ、これでその後プログラムしていくのに変えて大丈夫でしょうか? (2).includeエラーの方は、(こちらがエラー) #include <dmusici.h> となってるのですが、"dmusici.h"と言うのは"windows.h"などと一緒(ライブラリ?SDK?依存)の物でしょうか? C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include C:\Program Files\Microsoft DirectX SDK (November 2008)\Include とVC++08にセットアップ(?)してますが、どちらにも"dmusici.h"はありませんでした。これはこちらのSDKの問題でしょうか? (1)は、一応解決済みで、警告はでないのですが、もし他にいい方法があれば教えてほしいです。 (2)は、自分的にはDirectX SDKあたりだと思うのですが、良く分かってません… そもそも上記サイトでの解説が04年時の物で、"Visual C++ 6.0"と"DirectX 9.0 SDK Update (Summer 2003)"でのプログラムと解説なので、今のDirectX SDK (November 2008)で動作出来ない(このエラーが解決してもその後そぐわなくなる)ものなのでしょうか?そのあたりも教えていただきたいです。 かなり長文になってしまいました^^;。失礼しました。

  • HANDLEの宣言でのエラー

    現在C言語でプログラムを作成しています. シリアル通信を行うプログラムなのですが,エラーが出てしまい, ネットなどで検索してみたのですが,解決できませんでしたので,ご存知の方がいましたら,教えてください. エラーは以下のとおりです. [test.h] #ifndef INCLUDED_TEST_H #define INCLUDED_TEST_H HANDLE handle; HANDLE sirial(char ,char); void sirial_(HANDLE); #endif 上の用にヘッダファイルを作成し,グローバル変数の宣言・プロトタイプ宣言を行おうとすると型がHANDLEのところでエラーが出てしまいます. main関数と同じファイル内で宣言,定義した場合はエラーはでません. ヘッダファイルのように別ファイルに宣言するとエラーとなってしまうのです. 環境は Windows XP SP2 visual studio .net です. よろしくお願いします.

  • error LNK2001について

    C++ の勉強中です。 error LNK2001問題がありました。問題点も分からないから、 分かった方に教えていただけないでしょうか? ソースも添付します。環境はVS2005 express edition まず、ヘッダファイルです。ファイル名は、myheader.h #ifndef __MYHEADER_H__ #define __MYHEADER_H__ #define includeshow(x) \ { \ s.show(x); \ } class Sample{ public: void show(char * parameter); }; extern Sample s; #endif //------------------------------------------------ 次に、Sample.cppです。 #include "myheader.h" #include <stdio.h> void Sample::show(char *parameter){ printf("in show func"); } //----------------------------------------------- 最後にTest.cppです。 #include "myheader.h" #include <stdio.h> int main(){ includeshow("ppppp"); } これで error LNK2001: 外部シンボル ""class Sample s" (?s@@3VSample@@A)" は未解決です。というエラーが出ています。 よろしくおねがいします。

  • 条件付き取り込み

    C のヘッダーファイルでは、条件付き取り込みとして、 #ifndef SAMPLE #define SAMPLE /* sample.hの内容をここに書く */ #endif のように書くのが定石のようですが、これが無いと、具体的にどういう場合に不具合が出るのでしょうか。

  • シンボルをエクスポートするDLLの初歩的トラブル

    VC++6.0で簡単なDLL作成にチャレンジしたところ、ソースファイルの最後のところで、エンドオブファイルのエラーが出ます。教本と同じように書いたつもりですが、何処が異なっているのか分かりません。エラーを出す原因となっている箇所を御指摘下さい。 ↓ソースファイル #include "stdafx.h" #include "SUB.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { switch (ul_reason_for_call) { case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; } return TRUE; } SUB_API LONG _stdcall subtract( LONG sub1 , LONG sub2 ) { return( sub1 - sub2 ); } ↓ここからはヘッダーファイル #ifdef SUB_EXPORTS #define SUB_API __declspec(dllexport) #else #define SUB_API __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif SUB_API LONG __stdcall subtract( LONG sub1, LONG sub2 ); #ifdef _cplusplus } #endif --------------------構成: SUB - Win32 Debug-------------------- コンパイル中... StdAfx.cpp コンパイル中... SUB.cpp C:\Program Files\Microsoft Visual Studio\MyProjects\SUB\SUB.cpp(38) : error C2059: 構文エラー : 'end of file' cl.exe の実行エラー SUB.dll - エラー 1、警告 0

  • condefs.hはどこにあるの?

    #include <stdio.h> #include <windows.h> #ifdef __BORLANDC__ #include <condefs.h> #endif をヘッダに含むプログラムspitest.cppを無償コンパイラのボーランドC++5.5でコンパイルすると Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland spitest.cpp: エラー E2209 spitest.cpp 8: インクルードファイル 'condefs.h' をオープンできない *** 1 errors in Compile *** とエラーがでました。 どうしたらいいのでしょうか?

専門家に質問してみよう