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 回答