我有以下项目设置:
1)一个主要的iOS项目('超级项目')......这里没什么特别的,项目是建立在Xcode的默认iOS模板之上的。
2)第二个项目('子项目'),它是在静态库模板的基础上创建的。我将此项目添加到超级项目中,并在“目标依赖项”和“链接二进制文件库”构建阶段中从超级项目创建了对它的引用。
在子项目中,我有一个C函数声明,如下所示:
ABAddressBookRef myABAddressBookCreateWithOptions(CFDictionaryRef options, CFErrorRef * error);
它意味着作为AddressBook框架中类似命名函数的替换/代理,并使用该框架中的类型(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 :(得分:0)
今天我在项目中找到了一个isuue - &gt;信息 - &gt;配置添加配置文件,然后我运行我的项目,它在我的pch文件中出错了。
它显示xxx.h未找到,我搜索了很多解决方案,但我无法得到正确的答案。所以我记得那一步。
我删除了配置文件,我的项目正常。
我希望这对这类问题有所帮助。