我有一个基于c / c ++文件的iOS项目。到目前为止,我正在研究X代码4.6.3。最近我遇到了与录音有关的错误。建议的解决方案是转到x代码5.并修复它。
当我升级到x代码时5.突然项目开始出错,说找不到“stdio.h”。
我尝试再次删除和安装X代码,正如许多帖子中所建议的那样。它仍然会出现同样的错误。
检查是否已安装命令行工具。 X代码每次我再次下载时都会安装它。
我还试图摆弄Apple LLVM 5.0自定义编译器标志,语言,语言C ++,语言模块,语言 - 目标C的Xcode Build设置。 因为这是一个基本的头文件。我假设我错过了一些非常微不足道的东西。
问题:在为iOS编译时,我在哪里可以找到stdio.h
?或者我应该用什么标题代替stdio.h
以确保我的程序编译?
答案 0 :(得分:0)
您是否在新安装的X代码的组件内的首选项中安装了命令行工具?如果没有,那么请点击安装按钮。 然后尝试运行此命令: -
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/
答案 1 :(得分:0)
因此,Apple包括<stdlib.h>
,<stdio.h>
和朋友。您必须确保标题在路径上。您可以找到一系列要使用的<stdlib.h>
以及find
的相应路径:
$ find /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer -name stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/include/c++/4.2.1/tr1/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/usr/include/stdio.h
以下两种方法可以确保标题在路径上。首先(首选方式)是使用--sysroot
。使用--sysroot
可确保标题 和 库都在路径上,因此您不需要其他编译器选项(例如-I
, - L
,l
等):
CC=export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CFLAGS="-Wall -Wextra -Wconversion -arch armv7 -arch armv7s \
--sysroot="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk""
然后,你会像这样使用它:
$(CC) $(CFLAGS) -c foo.c -o foo.o
第二种方法是只包含标题,但是你会遇到类似的痛点:
CC=export CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
CFLAGS="-Wall -Wextra -Wconversion -arch armv7 -arch armv7s \
-I="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/usr/include""
你仍然会这样使用它:
$(CC) $(CFLAGS) -c foo.c -o foo.o
在我的情况下,我没有使用&#34;没有这样的文件或目录&#34;错误。但是 不是 没有这样的文件<stdio.h>
(这就是我所读到的)。相反,我使用键盘保存了一个文件: CTRL + S 错过了 CTRL ,因此我的--sysroot
拼写错误。它使用sdks
(额外s
的多个会费)而不是sdk
(单数)。所以SYSROOT目录不正确。
由于误导,我开始获得赏金......