Использование таблицы строк ресурсов в неуправляемых dll из управляемого кода - PullRequest
1 голос
/ 14 сентября 2011

У меня неуправляемое приложение MFC.Я написал оболочку CLI для приложения и преобразовал в DLL.Неуправляемый код имеет строковые табличные ресурсы, которые используются для отображения сообщений здесь и там.

Теперь я могу вызывать неуправляемый код из C # и использовать внутреннюю логику.Но код ошибки, когда он пытается прочитать строку ресурса.Я надеюсь, что ресурсы не загружены, поэтому я попытался включить P / invok LoadLibraryEx из kernel32.dll, но все еще бесполезно.Как я могу позволить неуправляемому коду использовать свой файл ресурсов?Это может сделать это, или это должно быть изменено ??

Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2011

Вы можете перестроить MFC, используя строки UNICODE, объявить экспортированную функцию, взяв идентификатор языка, идентификатор строки ресурса и строку возврата для этого ссылочного идентификатора и локали.

И использовать его в управляемой сборкеследующим образом

[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)
}
...