为啥我的简单目标 c 桥接头找不到文件“BraintreeCore.h”?

Posted

技术标签:

【中文标题】为啥我的简单目标 c 桥接头找不到文件“BraintreeCore.h”?【英文标题】:Why is my simple objective c bridging header failing to find the file "BraintreeCore.h"?为什么我的简单目标 c 桥接头找不到文件“BraintreeCore.h”? 【发布时间】:2016-07-28 00:04:47 【问题描述】:

这真的让我很沮丧。我之前已经将 Braintree 库集成到几个 ios 项目中,以便在 swift 中使用并且从来没有真正遇到过问题,但目前我无法让它工作。

我一遍又一遍地遵循/重复这里的说明:

https://developers.braintreepayments.com/start/hello-client/ios/v4

具体来说,我将 pod 'Braintree' 放入我的 Podfile 中,运行 pod install 和 pod update,并验证 Braintree 库现在出现在 Pods 目录中。

我现在也重新制作了 3 次桥接头,小心为我的应用设置目标。我还一遍又一遍地验证我已将我的构建设置中的目标 c 桥接头设置为正确的文件,并让它成功地为其他目标 c 文件创建桥接头。遗憾的是,尽管以下几行在桥接头中不起作用:

#import "BraintreeCore.h"
#import "BraintreeUI.h"

它们都给出了相同类型的编译错误,说找不到 BraintreeCore.h 文件。

我能够在没有出现错误的情况下执行以下操作:

#import "Pods/Braintree/BraintreeCore/Public/BraintreeCore.h"

但是当我尝试对 BraintreeUI.h 做同样的事情时:

#import "Pods/Braintree/BraintreeUI/Public/BraintreeUI.h"

它将我链接到 BraintreeUI.h 文件并告诉我在 BraintreeUI.h 文件中找不到关于此行的“BraintreeCore/BraintreeCore.h”文件:

#import <BraintreeCore/BraintreeCore.h>

我做错了什么??这应该很简单,但它已经激怒了我超过 12 个小时。

【问题讨论】:

【参考方案1】:

全面披露:我在 Braintree 工作,负责 iOS SDK。

您的桥接头不需要您指定伞形头文件的路径。这可能表明您的 Xcode 项目的构建配置已设置为 Xcode 的构建系统无法找到头文件。在一个典型的项目中,你应该可以做到这一点。

我的建议是仔细查看项目 > 构建设置 > 搜索路径设置。特别是,Header Search Paths 设置应包含一个如下所示的条目:

"$PODS_ROOT/Headers/Public/Braintree"

如果不是,我怀疑 CocoaPods 与您的 Xcode 项目不兼容。您可能想尝试去整合和重新整合。使用 CocoaPods 1.0,您应该能够执行 pod deintegrate,确保您的 Pods/ 文件夹已删除,然后运行 ​​pod install。最坏的情况是,您可能只想从一个全新的 Xcode 项目开始,然后拖过旧的源文件(尽管这可能会很痛苦)。

【讨论】:

【参考方案2】:

你找到解决方案了吗,HelloCoding?面临同样的问题...

就我而言,我注意到 Braintree 文档说“如果您的应用是用 Swift 编写的,但您的 CocoaPods 集成不使用动态框架,您可以在桥接头中导入 Braintree”。

所以我从桥文件中删除了导入,并包含了一个“use_frameworks!”而是在我的 Podfile 中进行说明。

我不知道这是否是解决问题的认可方法,但它似乎对我有用。

【讨论】:

以上是关于为啥我的简单目标 c 桥接头找不到文件“BraintreeCore.h”?的主要内容,如果未能解决你的问题,请参考以下文章

为啥找不到 Swift 4 语言的 Xcode 目标 c 接口标题名称

桥接头文件找不到导入的 Objective-C 项目

桥接头文件找不到导入的 Objective-C 项目

找不到 CocoaPods 桥接头文件

创建应用程序扩展时找不到桥接头

创建应用程序扩展时找不到桥接头