macOS中找不到'wchar.h'文件

76

我在使用 XCode 6.0.1 和 OS X 10.9.5 的情况下,当我尝试从终端运行 make 命令时出现了以下问题:

fatal error: 'wchar.h' file not found

在最近升级到Mavericks之前,这个问题没有发生过。


2
来自谷歌的问候。如果您最近升级到Mojave,那么这可能是您正在寻找的答案 - Qix - MONICA WAS MISTREATED
10个回答

98

首先确保已安装最新版本的XCode。接下来,我们需要安装/修复/更新命令行工具。要做到这一点,请运行

xcode-select --install
之前,XCode期望其活跃的开发者目录位于:
/Applications/Xcode.app/Contents/Developer/

但是最新的命令行工具已安装到

/Library/Developer/CommandLineTools/

因此,我们需要更改 XCode 的查找位置。要这样做,请运行

sudo xcode-select --switch /Library/Developer/CommandLineTools/

就这样了。这些步骤解决了我和两个同事的问题。


28
对我来说不起作用。我能看到wchar.h文件位于/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/wchar.h中,应该能够找到它。在命令行工具文件夹(以及更深的地方)中没有这样的文件。 - Euphorbium
5
我也遇到了同样的问题,但是和 string.h 有关。对我来说解决方法是手动删除所有输出目录(在 Finder 中)。问题是一些旧的输出文件使用过时的 XCode 路径作为引用。在我删除所有输出文件后,问题得到了解决。 - peter70
@peter70 你所提到的输出文件在哪里?我在Qt构建中遇到了这个问题,但我不知道从哪里开始寻找这些输出文件。 - Piotr99
2
如果我没记错的话,它们是普通的输出文件,在我指定的输出目录中(在Qt项目构建设置中)。 - peter70
@peter70:谢谢你的评论,对我来说也是一样的。 - Violet Giraffe

54
  • 我的错误和你的类似,说找不到string.h文件。我通过运行以下命令解决了这个问题:
  • 我的错误和你的相似,提示找不到string.h文件。我通过执行以下命令解决了这个问题:
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

我认为问题在于对于macOS Mojave用户来说,默认情况下头文件不再安装在/usr/include下。


这与此答案 https://dev59.com/fF8e5IYBdhLWcg3wAWns#26185979 结合使用。 - Jan Moritz
15
/Library/Developer/CommandLineTools/下没有Packages文件夹,只有以下几个文件夹:Library, SDKsusr. - Wenmin Wu

14

在ssell的帖子和peter70的评论基础上,我重新安装了xcode命令行工具并切换xcode的活动开发者目录,但仍然存在问题。我正在使用CMake,因此删除了已存在于Mojave上引用过时位置的Makefiles的debug/release文件夹。因此,为了解决未来的问题,在运行ssell的命令之后:

xcode-select --install

sudo xcode-select --switch /Library/Developer/CommandLineTools/

我认为如果你通过安装Xcode本身来安装命令行工具,则还需要同意使用sudo xcodebuild --license进行许可协议。如果您使用之前的xcode-select命令,则不需要这样做。

然后也要删除生成的构建脚本。如果使用CMake,请删除cmake-build-debugcmake-build-release目录(名称可能不同)


13

1
可以运行!(这是我的情况:似乎我最初让cmake生成了那些文件(几个月前),然后更新了Mac版本,然后再次尝试进行make / cmake。) - ch271828n
它适用于qt6,并且我删除了pro.user文件。 - crownZ
重新生成CMake和Ninja似乎不够。删除由CMake生成的文件对我有用。我猜我的文件太旧了。我希望CMake足够聪明,能够删除旧缓存。 - Daniel Ryan

5

删除所有生成的文件,就像@Alfredo Morales Pinzón一样。 如果您使用cmake,则需要删除工作目录“ cmake-build-debug ”并重新生成“ cmake-build-debug ”。


可以运行! (这是我的情况:似乎我最初是让cmake生成这些文件(几个月前),然后更新了Mac版本,然后再次尝试进行make / cmake。) - ch271828n

1

xcode-select --install 对我有用。

另外,如果您使用的是Visual Studio Code,而且您的智能感知表现出奇怪的行为 -

  1. 在您的项目根目录中创建一个名为.vscode的文件夹。
  2. 安装名为Microsoft C/C++的VSCode扩展程序
  3. 创建c_cpp_properties.json文件并粘贴以下内容

project_dir > .vscode > c_cpp_properties.json

{
    "configurations": [
      {
        "name": "macOS",
        "includePath": ["${workspaceFolder}/**"],
        "defines": [],
        "macFrameworkPath": ["/System/Library/Frameworks", "/Library/Frameworks"],
        "compilerPath": "/usr/bin/clang",
        "cStandard": "c11",
        "cppStandard": "c++17",
        "intelliSenseMode": "${default}"
      }
    ],
    "version": 4
}

升级这个。我猜基本错误来自于 vscode 设置中的错误编译器路径。 - RockingDice

0

确保在更新xcode后,您更新所有具有对wchar的引用的符号文件。对我来说,完全清理构建目录已经奏效


0
如果在更新 Xcode 后出现了这个问题,你需要(苹果公司是什么鬼?)从 https://developer.apple.com/download/more/?=for%20Xcode 手动下载并安装 Xcode 命令行工具。
或者使用终端。
xcode-select --install

在运行项目之前,重新启动并清除构建缓存(删除cmake-build-debug)。

我猜每次更新Xcode的所有主要程序更新后都需要这样做。


0
问题在于更新或其他进展(例如Xcode重新安装)后编译器的路径会发生变化。 我尝试了每个网站上提供的所有方法,但很遗憾都没有起作用。
我发现有许多问题会导致这种情况。
但是对我有效的方法是取消链接gcc。 我之前也安装了homebrew的gcc。 只需取消链接即可解决问题。 因此,如果您也是少数几个从homebrew安装了gcc的人之一,则
brew unlink gcc
就足以将其从默认路径中删除,这样您就可以回到Xcode的默认gcc(假设您已经安装了它)。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接