繁体   English   中英

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

[英]Using resource string table in unmanaged dll from managed code

我有一个不受管理的MFC应用程序。 我已经为该应用程序编写了CLI包装程序,并将其转换为DLL。 不需要的代码具有字符串表资源,该字符串表资源用于在此处和此处显示消息。

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

谢谢。

您可以使用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)
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM