У меня есть проект, который использует две сторонние библиотеки, обе из которых используют TCHAR в своих заголовочных файлах. К сожалению, одна библиотека выполняется как многобайтовая (назовите ее библиотекой a), а другая - на Unicode (назовите ее библиотекой b).
Теперь, насколько я понимаю, TCHAR заменяется прекомпилятором с wchar или char в зависимости от параметров сборки. Поэтому, когда библиотека a была скомпилирована, любой метод, который принимает параметр типа TCHAR, был настроен на ожидание параметра типа char, а методы в библиотеке b настроены на ожидание параметра типа wchar.
К сожалению, мое приложение-потребитель тоже должно выбрать набор символов. Если я выберу Unicode, то файл заголовка, который я включил для библиотеки a, скажет мне, что метод хочет wchar, потому что когда я компилирую TCHAR в заголовке, они интерпретируются как wchars. Это включает в себя TCHARS, определенные внутри структур. Я подтвердил такое поведение на практике, когда я выделяю и передаю буфер TCHAR, я получаю обратно мусор, потому что он заполняет мой буфер wchar многобайтовыми данными.
Мои вопросы: есть ли чистый способ использовать обе эти библиотеки в одном приложении? Возможно, я что-то не так делаю с тем, как я использую эти библиотеки?