2010-11-12 110 views
4

我在Windows 7(32位)上运行最新的cygwin,并尝试构建一个开源项目RtAudio(它目前不在此平台上构建)。tchar.h在cygwin上找不到

我工作过的其中一个问题是行 #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

你为什么使用Cygwin? RtAudio声称拥有本机Windows支持;你最好直接使用MinGW或Microsoft编译器。它看起来像RtAudio发行版包含一个Visual Studio设置,可能是信息。 – Porculus 2010-11-13 00:14:12

+0

@Porculus,好问题。我正在使用的其他组件需要linuxy环境。 – 2010-11-15 19:23:28

回答

5

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

+0

所以这听起来像超载是在这种情况下去的方式? – 2010-11-12 21:16:51

+0

我不能确切地知道你做了什么。 – 2010-11-12 21:23:00

+0

tchar.h无法找到 – MistyD 2015-01-28 19:35:36

2

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

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

+0

你能解释一下'#if defined (__WIN32__)&&!defined(__ CYGWIN __)。'我应该在哪里添加头文件? – MistyD 2015-01-28 19:36:09