在cygwin上找不到tchar.h

时间:2010-11-12 20:23:18

标签: c++ windows-7 cross-platform cygwin tchar

我在Windows 7(32位)上运行最新的cygwin,并尝试构建一个开源项目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,但有没有更好的这样做的方法?

2 个答案:

答案 0 :(得分:5)

tchar.h是Windows标头。如果软件需要的不仅仅是基础知识,那么必须将软件移植到libiconv或ICU。

答案 1 :(得分:2)

如果你想为Cygwin构建它,你应该确保它使用Unix / Linux代码路径而不是Windows代码路径。特别是, WIN32 宏通常用于保护Windows代码,但这也是在Cygwin上定义的,因此您可能需要将任何此类防护更改为#if defined(__WIN32__) && !defined(__CYGWIN__)

另一种方法当然是为本机Windows构建它。在Cygwin中,您可以使用gcc-3 -mno-cygwin或最近添加到Cygwin发行版的MinGW-w64交叉编译器来执行此操作。