Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

tchar.h not found on cygwin

I'm running the latest cygwin on windows 7 (32-bit), and trying to build an open-source project, RtAudio (it doesn't currently build on this platform).

One of the problems I've worked around is an error on the line #include <tchar.h>.

My build line is:

g++ -O2 -Wall -Iinclude -DHAVE_GETTIMEOFDAY -D__WINDOWS_DS__ -c RtAudio.cpp -o RtAudio.o

The error is:

tchar.h: No such file or directory

If I add /usr/include/mingw (which contains tchar.h) to the list of include paths, I get a lot more errors.

I've worked around the problem by not using LPCTSTR, and just overloading the one function that requires it for const char* and const wchar_t* so I could avoid including tchar.h, but is there a better way to do this?

like image 914
Jason Sundram Avatar asked Nov 12 '10 20:11

Jason Sundram


2 Answers

tchar.h is a Windows header. The software will have to be ported to libiconv or ICU if it needs more than just the basics.

like image 178
Ignacio Vazquez-Abrams Avatar answered Sep 24 '22 12:09

Ignacio Vazquez-Abrams


If you want to build this for Cygwin, you should ensure that it uses the Unix/Linux code paths rather than the Windows ones. In particular, the WIN32 macro is often used to guard Windows code, but that's defined on Cygwin too, so you might have to change any such guards to #if defined(__WIN32__) && !defined(__CYGWIN__).

The other way of course is to build this for native Windows. Within Cygwin, you can do this using gcc-3 -mno-cygwin or the MinGW-w64 cross compiler that was recently added to the Cygwin distro.

like image 31
ak2 Avatar answered Sep 23 '22 12:09

ak2