• ベストアンサー

C++/CLIのリソースファイルについて

C++/CLIのリソースファイルについて質問です。 環境は、Visual Studio 2005のC++/CLIです。 アセンブリリソースファイル(resx)の文字列リソースをEXEファイルをに含めることは可能でしょうか? 含めるか、含めないかの設定はどこで可能でしょうか? 現在は、EXEファイルと同じ場所にアセンブリリソースファイル(resx)がないと例外が発生します。

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

  • ベストアンサー
noname#251971
noname#251971
回答No.1

通常、resxファイルはコンパイルされてマネージリソースとして 実行ファイルなどに格納されるかと思うのですが、 どのようにresxを扱っていますでしょうか? もしかすると、ResXResourceReader などのクラスを用いて resxファイルの読み込みを行っているのでしょうか? 通常はそのようにはせず、resxファイルをプロジェクトに追加しておけば、 初期設定の状態で resx ファイルはマネージリソースコンパイラが処理してくれるので、 実行ファイルにリソースが含まれるはずです。 あとは、プログラム中で以下のような形でリソースの取得が行えるかと思います。 # 当方、C++/CLIはほとんど触ったことがありませんが、 # 一応 VC++ 2010 Express にて確認しました。 System::Reflection::Assembly^ assembly = System::Reflection::Assembly::GetExecutingAssembly(); System::Resources::ResourceManager^ resources = gcnew System::Resources::ResourceManager("<アセンブリ名>.<マネージリソース名>", assembly); String^ resMsg = resources->GetString("<リソース項目名>"); 文字列リテラル中の<>で囲んだ各部内容は以下のようなものを指定します。 (<>自体は含めません) ・<アセンブリ名>  リソースを含むアセンブリの名称。  通常はプロジェクト名称がアセンブリ名称として使われていると思います。 ・<マネージリソース名>  プロジェクトに追加したresxファイルの名称です。  「Resource1.resx」であれば「Resource1」です。 ・<リソース項目名>  resx内で定義しているリソースの項目名です。

関連するQ&A

  • C++/CLIで作ったDLLが読み込めない。

    現在、Visual Studio 2010を使い、 C++/CLIで作ったDLLを、C#から呼び出すプログラムを作成しております。 Visual Studioのデバッグでは、正常に動作するのですが、 IISに設定してブラウザから確認しようとすると、 「ファイルまたはアセンブリ 'wrap.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたモジュールが見つかりません。」 というエラーが出てしまいました。 下記のサイトなどを参考に、 「ソリューションを1つにして参照設定する」、 「Releaseモードにする」などと実施してみましたが、 解決するには至っておりません。 http://social.msdn.microsoft.com/Forums/ja-JP/vcgeneralja/thread/23fd794a-7d8a-4153-9e1e-0358c38a84eb この原因と対処法に関して、ご助言頂きたいと思います。 宜しくお願いします。

  • ネイティブのDLLをC++/CLIに対応させるためのヘッダファイル

    ネイティブのDLLをC++/CLIに対応させるためのヘッダファイル 現在ネイティブのDLLをVisual StudioのC++/CLIに対応させる作業をしていますが、順調に進んでいません。 ネイティブのDLLをC++/CLIに対応させたヘッダファイルがあれば参考にしたいのですが、何か参考にできるホームページ等、紹介して頂けますか?

  • C# リソースに埋め込んだ.exeファイルを実行

    別のプロジェクトで作成したアセンブリ(.exe)をあるアセンブリのリソースに埋め込み、実行したいのですが、どうすれば良いのでしょうか。 環境: VisualC# Express 2010 .NET Framewrok 4.0 です。

  • C#で例外が発生したとき、例外をthrowした場所を知りたい。

    Visual Studio 2005(C# 2.0 )を使っています。 例外が発生したとき、例外をthrowした場所を知りたいのですが、可能でしょうか。可能であればどうすればよいのでしょうか。

  • C++/CLIからC++の呼び出しで例外

    お世話になります。 C#からC++のNativeコード(unmanaged)を呼び出したいと思い、C++/CLIでラッパーを作りました。 そのラッパーのクラス内で、C++で書かれたNativeコードのクラスのインスタンスを作成する時に例外が発生してしまいます。 例外はこんな感じです。 System.Runtime.InteropServices.SEHException はハンドルされませんでした。 Message="外部コンポーネントが例外をスローしました。" Source="ManMovLib" ErrorCode=-2147467259(0x80004005) StackTrace: 場所 new(UInt32 ) C++/CLIは以下の様なコードで、コンストラクタ内でC++のクラスの実体を作っています。そして、このnewで例外が発生します。 AVSource::AVSource(void) {   m_pObj = new CAVSource; } C++側は、実は何もしていません。 CAVSource::CAVSource(void) { } そして、色々と試行錯誤をした結果、C++側のクラスにvirtual関数があると、例外が出てしまうという事実を突き止めました。 ただ、どこを調べても、virtual関数を用いてはいけないとは書いてありません。 実際、virtualを使ってはいけないという制約があるのでしょうか? また、何かNativeのコードを作成する際に注意点とかありますでしょうか? ちなみに、プロジェクトの設定で、Nativeコードのデバッグを可能にするチェックをつけてデバッグ実行すると、何故かこの例外は発生せずに、全て正常に動きます。これもなぞです。 よろしくお願いします。

  • visual studio 2005 c++/CLI ではないC++ winアプリ

    こんばんは 表記の件に関して質問があります。 表題のとおりなのですが visual studio 2005 でc++/CLI ではないC++(gcnewがでてこないやつ) windowsアプリを作成したいのですが、出来ますでしょうか。 2003にすればたぶん大丈夫なのですが、2005でできないでしょうか。 以上よろしくお願いします。

  • リソースファイルとは・・・

    リソースについて、2つ疑問が沸きました。 もしよろしかったら、アドバイスよろしくお願い致します。 (1)最近まで、Visual C# .NETを使用しておりました。 さきほど、Visual C++ .NETをいろいろいじっていたのですが、C++にはリソースというフォルダがあって、C#にはないのか疑問になりました。 どうしてC++では、リソースとして明確に分けているのかどうしてもわかりません。(そういえば、C#では、多言語に対応できないのかな・・・!?) (2)C#では、たとえば、メニューのキャプションを変更したりといったことは、コードと同じように編集できるのに、どうしてC++では、わざわざリソースエディタのメニューデザイナで編集させているのでしょうか? あと、リソースエディタの中にダイアログと言う項目があるのも不思議でなりません。ダイアログもフォームなのにリソースなんでしょうか?(リソースファイルとして保存して何か意味あるのでしょうか?)

  • リソースエディタについて

    プログラミングの初心者です。最近Borland C++ というコンパイラをダウンロードして順調にやっていたのですが リソースファイルをどうやって作るのかわかりません。 それ以前にBorland にリソースエディタはついているのですか?どうしてもリソースエディタがほしいので、visual studio 2008 express edition というコンパイラもインストールしたのですが肝心なリソースエディタがついていませんでした。いったいどうやってリソースファイルを作ればいいのでしょうか? 説明に不足があればまた足しますのでよろしくお願いします。

  • String Table リソースを条件によって切り換えたい(VS2005)

    Visual Studio2005 VC++ のリソースビューに含まれる、String Table の内容を条件によって切り換えたいと考えています。 (より具体的には IDR_MAINFRAMEの文字列だけ変更できればよいのですが。) String Table以外のリソースであれば、プリプロセッサの定義によって内容を変更できますが、String Tableだけは例外的に切り替えられないようです。 何かよい方法をご存知の方はご教授いただけますと幸いです。

  • Visual Studio 2005 C++で以下のエラー

    Windows XP,Visual Studio 2005 C++でプログラム を作成しています。ツールストリップにボタンを 追加したら以下のエラーが出たのですが、意味が わからないので教えてもらえないでしょうか? System.Resources.MissingManifestResourceException' のハンドルされていない例外が mscorlib.dll で発生しました。 追加情報: 指定されたカルチャまたはニュートラル カルチャに対して適切なリソースが見つかりませんでした。"tasukete_type120060614.tasukete.resources" が適切に埋め込まれたか、実行時にアセンブリ "tasukete_type1(20060614)" にリンクされたか、または必要なサテライト アセンブリが読み込まれて完全に署名されていることを確認してください。 以上よろしくおねがいします。

専門家に質問してみよう