Передача строки в C ++ из .NET с японской версией ОС - PullRequest
0 голосов
/ 21 марта 2012

Я кодировал свое приложение (.NET) в английской языковой системе.Я импортировал (DllImport) C ++ dll в мое приложение и вызывает метод со строкой в ​​качестве одного из параметров.Эта настройка хорошо работает в языковой системе системы по умолчанию (английский-США).

Проблема возникает, когда я изменяю языковой стандарт системы на «Японский».Строка, полученная в коде C ++, несколько отличается, и моя функция выдает ошибку из-за этого.

C #:

[DllImport(".\\MainDll.dll", EntryPoint = "DoWork")]
    public static extern int DoWork(string dData,
                                            string sData,
                                            byte[] eData);

Вызов в конце C #:

int BufferSize = DoWork(dString, sString, retData);

C ++:

__declspec(dllexport) int DoWork( LPCTSTR chData1_i, LPCTSTR chData2_i, unsigned char chDecryptedData_o[] )

{.,.

}

Я могу обнаружить, что полученные данные (chData1_i) отличаются, когда применяется другой параметр локали системы.Я пробовал char *, а также wchar_t * вместо LPCTSTR.

Любая подсказка / помощь приветствуется.

Спасибо ...

...