我有一個非託管MFC應用程序。我爲應用程序編寫了一個CLI包裝器,並將其轉換爲一個DLL。未經處理的代碼具有用於在這裏和那裏顯示消息的字符串表資源。在託管代碼中使用非託管dll中的資源字符串表
現在我可以調用C#中的非託管代碼並使用內部邏輯。但是當它試圖讀取資源字符串時,代碼出錯了。我希望資源沒有加載,所以我嘗試從kernel32.dll中包含一個P/invoke LoadLibraryEx,但仍然沒有用。我如何讓非託管代碼使用其資源文件?它可以這樣做,還是應該修改?
謝謝。
我有一個非託管MFC應用程序。我爲應用程序編寫了一個CLI包裝器,並將其轉換爲一個DLL。未經處理的代碼具有用於在這裏和那裏顯示消息的字符串表資源。在託管代碼中使用非託管dll中的資源字符串表
現在我可以調用C#中的非託管代碼並使用內部邏輯。但是當它試圖讀取資源字符串時,代碼出錯了。我希望資源沒有加載,所以我嘗試從kernel32.dll中包含一個P/invoke LoadLibraryEx,但仍然沒有用。我如何讓非託管代碼使用其資源文件?它可以這樣做,還是應該修改?
謝謝。
您可以使用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)
}
我不知道我是否讓我的問題不清楚,或者我沒有理解您的解決方案。對不起,如果沒有。我想使用該dll內的dll內部的資源。我不想在dll被調用的地方使用它。代碼錯誤出現在試圖使用資源字符串表的dll代碼中。 –
可以重新拋出異常,與本地化異常字符串填寫消息,如果你的異常類包含一個特別是恢復與每個拋出的異常相關的id。 –