' wchar.h'文件未找到

时间:2017-09-21 11:10:31

标签: c++ ios xcode

我知道这个问题:macOS 'wchar.h' File Not Found 但它没有帮助我。我尝试重新安装xcode,重新安装命令行工具,重新启动系统。 wchar.h文件已就绪,但编译器无法找到它。我还能尝试什么?也许它与sysroot有关?有什么方法可以解决这个问题吗?

macbooks-MacBook-Pro:Rack euphorbium$ sudo make
c++ -Iinclude -Idep/include -Idep/lib/libzip/include -DVERSION=dev -MMD -O3 -march=core2 -ffast-math -g -Wall -DARCH_MAC -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk -mmacosx-version-min=10.7 -DAPPLE -stdlib=libc++ -std=c++11 -stdlib=libc++ -c -o build/src/app.cpp.o src/app.cpp
clang: warning: no such sysroot directory: '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk' [-Wmissing-sysroot]
In file included from src/app.cpp:1:
In file included from include/app.hpp:2:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/vector:265:
In file included from /Library/Developer/CommandLineTools/usr/include/c++/v1/iosfwd:90:
/Library/Developer/CommandLineTools/usr/include/c++/v1/wchar.h:119:15: fatal error: 
      'wchar.h' file not found
#include_next <wchar.h>
              ^~~~~~~~~
1 error generated.
make: *** [build/src/app.cpp.o] Error 1

因为wchar.h既存在于xcode应用程序中,也存在于/Library/Developer/CommandLineTools中,我认为它在一些完全不相关的文件夹中查找它。

9 个答案:

答案 0 :(得分:13)

升级到macOS High Sierra后我遇到了同样的问题。在停止处理此错误之前正在编译的项目。就我而言,项目文件是由CMake应用程序生成的。解决方案是再次运行CMake,“删除缓存”和“配置”项目。这更正了make文件中的sysroot目录引用以指向新的SDK并且错误已解决。

答案 1 :(得分:8)

我遇到了同样的问题。我能够通过使用符号链接来修复它。 这就是我所做的:

cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
sudo ln -s MacOSX.sdk MacOSX10.07.sdk  

然后输入您的root密码。

注意:您必须使用所需的sdk调整最后一行。

答案 2 :(得分:5)

对于任何在MacOSX Mojave上苦苦挣扎的人来说,answer可以解决这个问题。简而言之:

  • 转到终端并运行open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg,这将提示您安装Xcode工具。
  • 完成后,到达终端并运行sudo xcode-select -s /Library/Developer/CommandLineTools

答案 3 :(得分:2)

这是由makefile中设置的不正确的sysroot(设置为较旧的mac os版本)引起的。

答案 4 :(得分:1)

我的系统是macOS Mojave,我通过运行以下命令行解决了此问题:

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

答案 5 :(得分:1)

设置环境变量

SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk"

,然后重新打开终端。这样可以解决标题未找到的问题。

要查看编译器在哪里找到标头,请运行-v

 clang -v test.c

答案 6 :(得分:0)

就我而言,这个问题是由于 MacOS 更改了标头的路径。

检查此注释:MacOS release note。 所以解决方案是让编译器可以找到那些头文件。 我的 macOS 版本是 Catalina 10.15,XCode 版本 12.4。对于此版本,似乎不再提供 /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg,因此上述 sulotions 对我不起作用。

这个方法拯救了我的夜晚:Fixing C++ compilation bugs for the MacOS Catalina upgrade。请注意,如果您按照其步骤操作并出现找不到某些全局符号的错误,请不要按其说的修改 LIBRARY_PATH。

答案 7 :(得分:0)

如果您使用的是 CLion,follow these steps

  1. 点击 IDE 底部中心的 CMake
  2. 点击左侧的设置齿轮图标
  3. 点击重置缓存并重新加载项目

我花了 3 个小时才找到这个解决方案。

仅供参考,这个项目在 Bug Sur 11.3 上运行良好,但在我升级到 Big Sur 11.4 后无法构建

答案 8 :(得分:-1)

我做了一些愚蠢的操作,但确实解决了问题。

这是我所做的: 我最初是在Mojave的MacBook上使用Homebrew安装c ++的,所以我不得不使用/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg上的安装程序来手动安装Xcode CommandLineTools。然后,我将“ c ++”文件夹的内容从文件夹/Library/Developer/CommandLineTools/usr/include/c++/v1复制到了我希望丢失的文件位于/usr/local/Cellar/gcc/8.2.0/include/c++/8.2.0的文件夹中,同时替换了相同名称的文件。

这个技巧奏效了,因为现在丢失的文件“ wchar.h” 就在应有的位置...但是,恐怕您的设置可能不同。