2013-04-12 61 views
2

我有以下項目設置框架頭

1)一個主要的iOS項目(「超級項目」)......這裏沒有什麼特別的項目是建立在Xcode的一個默認iOS模板之上的。

2)第二個項目('子項目'),它創建在靜態庫模板的頂部。我將這個項目添加到超級項目中,並在「目標依賴項」和「鏈接二進制庫」構建階段的超級項目中創建對它的引用。

子項目裏面,我有一個C函數聲明,看起來像這樣:

ABAddressBookRef myABAddressBookCreateWithOptions(CFDictionaryRef options, CFErrorRef * error); 

它的意思是從地址簿框架相若方式命名功能的置換/代理服務器和使用類型(ABAddressBookRef)從該框架。該聲明存儲在頭文件中,並且該實現存在於相應的.m文件中。爲了提供這種類型的,我加入了框架頭到.pch文件我的子項目:

#ifdef __OBJC__ 
     #import <AddressBook/AddressBook.h> 
     #import <Foundation/Foundation.h> 
#endif 

以下問題出現:

如果我建立上層項目(釋放或調試配置)時,構建失敗,出現此錯誤消息:

.../ManagedCFunctions.h:24:1: Unknown type name 'ABAddressBookRef' 

事情我已經做了解決這個問題,或者至少得到了什麼事情的想法:

  • 建設子項目單獨工作(但是無論後續子項目會生成失敗)
  • 取消對申報擺脫錯誤的,但自然引起了主叫位置
  • 的「Implicit Declaration of Function」警告添加進口到超級項目的.pch文件沒有幫助
  • 將導入添加到函數的頭文件直接工作,但不是我的方案中的一個選項(部分代碼是自動生成的,並且很難找出哪個文件需要哪些框架)

我懷疑頭文件可能在Objective-C中沒有被處理,而是在C模式下,所以導入會被忽略,因爲圍繞導入的宏是#ifdef __OBJC__,但刪除它也沒有幫助。我還嘗試將#import <Foundation/Foundation.h>添加到函數的頭文件中以「建議」Objective-C模式,它實際上在文件中啓用了正確的語法高亮顯示,但沒有幫助構建。

任何有關爲什麼在.m中找到符號的建議,但不在.h文件中?或者任何解決方案,不需要將導入添加到特定的頭文件,但全局?

回答

0

今天我在項目中找到了一個isuue - > Info - > Configurations添加了一個配置文件,然後我運行了我的項目,它在我的pch文件中出錯了。

它顯示xxx.h沒有找到,我搜索了很多解決方案,但我無法得到正確的答案。所以我記得那一步。

我刪除了配置文件,我的項目變得正常了。

我希望這會對這類問題有所幫助。