2013-10-18 39 views
2

我有一个基于c/C++文件的iOS项目。到目前为止,我正在研究X代码4.6.3。最近我遇到了与录音有关的错误。建议的解决方案是转到x代码5并修复它。迁移到xcode5后找不到stdio.h

当我升级到x代码5.突然,项目开始给错误,说“stdio.h”没有找到。

我尝试删除并重新安装X代码,正如许多帖子中的建议。它仍然给出同样的错误。

检查是否安装了命令行工具。每次我再次下载时,X代码都会安装它。

我也尝试过为Apple LLVM 5.0自定义编译器标记,语言,语言-C++,语言模块,语言目标C编写Xcode构建设置。因为这是一个基本的头文件。我假设我错过了一些非常微不足道的东西。

问题:在编译iOS时,我在哪里可以找到stdio.h?或者我应该使用什么标题代替stdio.h以确保我的程序编译?

+0

感谢您的回复,但重复的没有它的不是这个问题我检查了。 –

+0

我不是iOS开发人员,但是如果您正在编写C++代码,您是否尝试过使用? – Enno

回答

0

您是否在新安装的X代码组件的首选项中安装了命令行工具?如果没有,请点击安装按钮。 而在这之后尝试运行此命令: -

sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/ 
+1

那么,他明确提到命令行工具已安装 –

+0

Hussain和Martin感谢您的回复,您的回复让我朝不同的方向思考,并发现项目仍然指向iPhoneOS6.1.sdk。这是不适用于Xcode 5.我有这样的错误“clang:warning:没有这样的sysroot目录:'/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk '“我能弄清楚的一个解决方案是获取iPhoneOS6.1.sdk并粘贴到那里。这使得该项目的工作,但我仍然无法切换到iPhoneOS7.0.sdk。如果任何人有任何想法,请让我知道 –

+0

要解决您的具体问题,我们需要看到您的编译器驱动程序命令。 – jww

0

所以,苹果包括<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, - Ll等):

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 

以我为例,我是用“没有这样的文件或目录”错误而失败。但它不是没有这样的文件<stdio.h>(这是我读它是)。相反,我用键盘保存了一个文件:一个CTRL + S错过了CTRL,所以我的--sysroot拼写错误。它使用sdks(复数s)而不是sdk(单数)。所以SYSROOT目录不正确。

我开始赏金由于拼写错误....