Передача строки C # в неуправляемую DLL C в Windows Mobile

У меня есть неуправляемая C ++ DLL, которую мне нужно вызвать из приложения Windows Mobile C # .

У меня есть оболочка C #, и она прекрасно работает на рабочем столе. Я могу вызывать функции DLL из настольной программы C # и передавать строки без проблем.

Однако, когда я компилирую библиотеку и оболочку для мобильной платформы, я получаю сообщение об ошибке в строках DllImport, в которых говорится, что CharSet. ANSI не распознается. Единственные параметры, которые мне разрешено писать, - это CharSet.Auto и CharSet.Unicode.

Проблема в том, что независимо от этого параметра строки, получаемые в функциях C ++, являются строками широких символов, а не обычными символами * строки, которые они ожидают.

Мы можем использовать wcstombs () для перевода всех строк в начале каждой функции C ++, но я бы предпочел не изменять библиотеку до такой степени ...

Есть ли способ исправить маршаллинг между C # и C, который работает с .NET Compact Framework?

8
задан Bryan 20 October 2010 в 19:31
поделиться