在托管代码中使用非托管dll中的资源字符串表

时间:2011-09-14 05:35:50

标签: c# resources c++-cli native-code unmanagedresources

我有一个非托管的MFC应用程序。我为应用程序编写了一个CLI包装器并转换为DLL。 unamanged代码具有字符串表资源,用于在此处和那里显示消息。

现在我可以从C#调用非托管代码并使用内部逻辑。但是当代码尝试读取资源字符串时,代码会出错。我希望资源没有加载所以我尝试从kernel32.dll包含一个P / invoke LoadLibraryEx但仍然没有用。如何让非托管代码使用其资源文件?可以这样做还是应该修改?

感谢。

1 个答案:

答案 0 :(得分: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)
}