我有以下項目設置:框架頭
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
文件中?或者任何解決方案,不需要將導入添加到特定的頭文件,但全局?