1

アンマネージ MFC アプリケーションがあります。アプリケーションの CLI ラッパーを作成し、DLL に変換しました。管理されていないコードには、あちこちにメッセージを表示するために使用される文字列テーブル リソースがあります。

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

ありがとう。

4

1 に答える 1

0

UNICODE 文字列を使用して MFC を再構築し、エクスポートされた関数を宣言し、言語 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)
}
于 2011-09-14T05:47:38.867 に答える