tchar.h не найден в cygwin
-
09-10-2019 - |
Вопрос
Я запускаю последнюю версию cygwin в Windows 7 (32-разрядная версия) и пытаюсь создать проект с открытым исходным кодом, RtAudio (в настоящее время он не построен на этой платформе).
Одна из проблем, с которой я работал, - это ошибка в строке
#include <tchar.h>
.
Моя линия сборки такова:
g++ -O2 -Wall -Iinclude -DHAVE_GETTIMEOFDAY -D__WINDOWS_DS__ -c RtAudio.cpp -o RtAudio.o
Ошибка заключается в:
tchar.h: No such file or directory
Если я добавлю /usr/include/mingw (который содержит tchar.h) в список путей включения, я получу намного больше ошибок.
Я обошел проблему, не используя LPCTSTR, а просто перегрузив одну функцию, которая требует этого для const char*
и const wchar_t*
таким образом, я мог бы избежать включения tchar.h, но есть ли лучший способ сделать это?
Решение
tchar.h
это заголовок Windows. Программное обеспечение должно быть портировано в Libiconv или ICU, если ему нужно больше, чем просто основные основы.
Другие советы
Если вы хотите создать это для Cygwin, вы должны убедиться, что он использует пути к коду Unix / Linux, а не Windows.В частности, WIN32 макрос часто используется для защиты кода Windows, но он также определен в Cygwin, поэтому вам, возможно, придется изменить любые такие средства защиты на #if defined(__WIN32__) && !defined(__CYGWIN__)
.
Другой способ, конечно, создать это для родной Windows.В Cygwin вы можете сделать это с помощью gcc-3 -mno-cygwin
или кросс-компилятор MinGW-w64, который недавно был добавлен в дистрибутив Cygwin.