2013-10-18 75 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目錄不正確。

我開始賞金由於拼寫錯誤....