2011-09-14 10 views
1

私はアンマネージMFCアプリケーションを持っています。アプリケーション用のCLIラッパーを作成し、DLLに変換しました。 unamangedコードには、メッセージの表示に使用される文字列テーブルリソースがあります。マネージコードからアンマネージdllでリソース文字列テーブルを使用する

ここで、C#からアンマネージコードを呼び出し、内部ロジックを使用することができます。しかし、コード文字列はリソース文字列を読み込もうとしたときにエラーになります。私はリソースがロードされていないので、kernel32.dllからP/invoke LoadLibraryExをインクルードしようとしましたが、まだ使用していないことを願っています。アンマネージコードにリソースファイルを使用させるにはどうすればよいですか?それを行うことができますか、それとも変更する必要がありますか?

ありがとうございました。

+0

あなたは、ローカライズされた例外の文字列を使用してメッセージを充填、例外を再スローすることができますスローされた各例外に関連付けられた特定のリソースID。 –

答えて

0

UNICODE文字列を使用してMFCを再構築し、エクスポートされた関数を宣言し、whickが言語ID、リソース文字列のID、およびその参照IDとロケールの文字列を返します。

例えば、

[DllImport("resource.en-US.dll")] 
string GetResourceString(int LANGUAGE_ID, int IID); 

を次のようにマネージアセンブリでそれを使用して:あなたは例外クラスが含まれている場合

try 
{ 
    ... 
} 
catch(MyException ex) 
{ 
    throw new ApplicationException(GetResourceString(ex.Language, ex.ResourceID), ex) 
} 
+0

私は私の質問を不明確にしたのか、私はあなたの解決策を理解していないのか分かりません。申し訳ありませんがしなかった場合。私は、そのDLL自体の中でDLLの中でリソースを使いたいと思っています。私はdllが呼ばれる場所でそれを使用したくありません。コードは、リソースの文字列テーブルを使用しようとしているdllコードの中でエラーを出します。 –

関連する問題