5

我正在 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,但是有没有更好的方法来做到这一点?

4

2 回答 2

5

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

于 2010-11-12T20:27:32.160 回答
2

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

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

于 2010-11-13T08:43:25.980 回答