【问题标题】:tchar.h not found on cygwin在 cygwin 上找不到 tchar.h
【发布时间】:2010-11-12 20:23:17
【问题描述】:

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

【问题讨论】:

  • 你为什么使用 Cygwin? RtAudio 声称拥有原生 Windows 支持;您最好直接使用 MinGW 或 Microsoft 编译器。看起来 RtAudio 发行版包含一个可能提供信息的 Visual Studio 设置。
  • @Porculus,好问题。我使用的其他组件需要 linuxy 环境。

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


【解决方案1】:

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

【讨论】:

  • 所以听起来过载是在这种情况下要走的路?
  • 如果不知道你做了什么,我真的不能说。
  • tchar.h 找不到
  • 你是说 gcc 没有 tchar.h 吗?
  • @MistyD:GCC 永远不会有tchar.h
【解决方案2】:

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

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

【讨论】:

  • 您能解释一下#if defined(__WIN32__) && !defined(__CYGWIN__). 的意思吗?我应该在哪里添加该标题?
猜你喜欢
  • 2012-06-17
  • 2014-04-26
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
相关资源
最近更新 更多