Привязка C ++ _TCHAR к строке C # в интерфейсе SWIG

У меня есть какой-то старый код C ++, который я пытаюсь скомпилировать как DLL, чтобы его можно было использовать в проекте C # Xamarin.IOS, используя SWIG для создания привязок для оболочки между C ++ и C #.

До сих пор я был в состоянии заставить его работать для всех методов, которые принимают или возвращают int, double, или же bool параметры, но я застрял с тем, как бороться с _TCHARs.

Где используется код C ++ _TCHARв качестве типов параметров, независимо от того, что я пробовал в файле интерфейса SWIG, параметры C # для любых методов, которые должны принимать string подходят как SWIGTYPE_p__TCHARНасколько я могу судить, SWIG производит, когда не знает, что ему следует использовать.

Я уверен, что это должен быть случай использования правильной карты типов в файле интерфейса SWIG, но ничего из того, что я пробовал до сих пор, не сработало, любые предложения будут высоко оценены!

0

Решение

TCHAR константа, определяемая препроцессором, которая устанавливается во время компиляции windows.h на основе UNICODE константа препроцессора: если UNICODE определяется, это будет либо wchar_tв противном случае это будет символ. Но вы должны выбрать один: ваш модуль Unicode или ASCII? Если первое, вы должны установить UNICODE как часть вашей команды SWIG:

swig -DUNICODE -c++ -csharp example.i

еще

swig -c++ -csharp example.i

Поскольку вы, вероятно, делаете последнее и получаете эту ошибку, вы, вероятно, забыли %include <windows.i> после преамбулы и перед вашими заявлениями (если у вас возникли проблемы, покажите .i тогда я могу быть более конкретным).

0

Другие решения

В конце концов, разработчик кода C ++ изменил свой код, чтобы использовать стандартные charс вместо _TCHARи мне удалось заставить это работать.

0

По вопросам рекламы [email protected]