【问题标题】:error: unknown type name '__darwin_wctype_t' typedef __darwin_wctype_t wctype_t compiling on MacOS with Clang错误:未知类型名称 '__darwin_wctype_t' typedef __darwin_wctype_t wctype_t 在 MacOS 上使用 Clang 编译
【发布时间】:2020-05-01 17:10:22
【问题描述】:

全新的项目完全没问题,但我发现了相当老的开源项目并想编译它。基本上,包含iostreamalgorythm 之类的标头时会出现错误。

我的环境如下所示:

  1. MacOS 10.15.4
  2. Clang 11.0.3
  3. Cmake 3.16.5
  4. 这里安装了工具和头文件/Library/Developer/CommandLineTools/usr/bin
  5. 项目使用 cotire 1.8.0
  6. IDE - CLion

一般来说,项目由 30 多个子项目组成,有些是 C,有些是 C++。只有 C 中的那些可以被构建。

我一直在尝试很多东西:为 Cmake 设置目标版本,设置手动查找头文件的路径(在 Cmake 文件中)。重新安装开发者工具也无济于事。

请查看原始错误消息:

In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/iostream:37:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/ios:214:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/iosfwd:95:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/wchar.h:118:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/wchar.h:92:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/_wctype.h:42:
In file included from /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/__wctype.h:62:
/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/_types/_wctype_t.h:32:9: error: unknown type name '__darwin_wctype_t'
typedef __darwin_wctype_t wctype_t;

更新 1 我向前移动了一点,发现stdafx.h 甚至不能包含iostream。所以我会检查所有包含路径。

【问题讨论】:

    标签: c++ clang iostream


    【解决方案1】:

    包含问题。项目有自己的_types.h,系统中有一个。首先包含项目的变体,系统的变体被忽略。显然,这会导致这种神秘的信息。

    这是根本原因。Clang 的文档说我需要使用-isysroot 来明确设置系统的头文件根目录,这将阻止首先匹配项目的头文件,但这对我不起作用。临时修改了项目的头文件名(types.h),效果很好(没有下划线,不再被认为是系统头文件),同时我会尽量修复它。

    【讨论】:

      猜你喜欢
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2018-05-12
      • 2014-12-12
      • 2015-10-20
      • 2017-04-04
      相关资源
      最近更新 更多