我在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,但有没有更好的这样做的方法?
答案 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交叉编译器来执行此操作。