错误:未知类型名称 '__darwin_wctype_t' typedef __darwin_wctype_t wctype_t 在 MacOS 上使用 Clang 编译

Posted

技术标签:

【中文标题】错误:未知类型名称 \'__darwin_wctype_t\' typedef __darwin_wctype_t wctype_t 在 MacOS 上使用 Clang 编译【英文标题】: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 之类的标头时会出现错误。

我的环境如下所示:

    MacOS 10.15.4 Clang 11.0.3 Cmake 3.16.5 这里安装了工具和头文件/Library/Developer/CommandLineTools/usr/bin 项目使用 cotire 1.8.0 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。所以我会检查所有包含路径。

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于错误:未知类型名称 '__darwin_wctype_t' typedef __darwin_wctype_t wctype_t 在 MacOS 上使用 Clang 编译的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 5.1 - iOS 7.1 错误

使用用于 C++ 代码的标头编译 C 代码时未知类型名称 char16_t

自定义输入类型的 Apollo 数组作为 Mutation 参数抛出“__typename”:未知字段错误

错误未知类型“webform__webform”使用 gatsby-drupal-webform & GraphQL

错误 C2893 无法专门化函数模板“未知类型 std::invoke(_Callable &&,_Types &&...)”

使用 OpenCV readNetFromTensorFlow 运行 Keras DNN 模型(UNet):错误:操作解码器_stage0_upsampling/Shape 中的未知层类型形状