Xcode - 创建了一个 iOS 框架,但不能在项目中使用它

Posted

技术标签:

【中文标题】Xcode - 创建了一个 iOS 框架,但不能在项目中使用它【英文标题】:Xcode - Created an iOS framework but can't use it in a project 【发布时间】:2015-07-23 21:14:52 【问题描述】:

我已经使用本教程创建了一个 ios 框架:http://www.raywenderlich.com/65964/create-a-framework-for-ios#comments

当我将它添加到一个全新的项目中时,我可以导入我的公共标头并且我可以成功构建它。当我尝试从框架创建对象的实例时,问题就来了;构建它时,失败并出现 40 个错误:

所有错误显示如下:

Apple Mach-O Linker Error "_OBJC_CLASS_$_AVPlayerItem

在底部显示此消息> 未找到架构 arm64 的符号

起初我以为问题是我创建的框架不支持 arm64。我在终端中执行了以下行来检查我的框架支持哪些架构:

xcrun lipo -info MyFramework

输出是> fat文件中的架构:MyFramework是:armv7 i385 x86_64 arm64

我使用的是 Xcode 6.4。

谢谢。

更新:以下是错误列表的一些图片:

谢谢!

【问题讨论】:

请提供完整的错误列表。 @JohnTracid 我已经添加了错误列表。谢谢。 您的项目中似乎没有一些框架,如 AudioToolbox 或 AVFoundation 以及 C++ 库。您能展示一下您添加到项目中的框架吗? @JohnTracid 既然你告诉我了,我添加了这个:Foundation、AudioToolbox、CoreAudio、MediaPlayer、AVFoundation 和 libiconv.dylib。我还有 19 个错误。我注意到我的框架中有一个类,扩展名为 .mm(用于 obj c ++)。你认为这是问题所在吗? 检查我的答案。如果您在项目中使用 C++,则需要 C++ 标准库。 【参考方案1】:

我可能是错的,但我认为在您的 MyFramework 项目中您使用了多个 iOS 框架,例如 AVFoundation 以及 C++ 标准库 (libstdc++.6.dylib)。在您的脂肪库中,您没有它们。您需要手动将此依赖项添加到该项目中。

另一个关于创建 iOS 框架的好教程是iOS Framework Tutorial

【讨论】:

我试试看。谢谢。 (解决后我会接受答案)。 现在可以使用了。我所做的是使用我的自定义框架在项目中将 AppDelegate.m 重命名为 AppDelegate.mm。 (并且还添加了所需的框架)。我会赞成你的答案让我走上正确的道路。【参考方案2】:

转到 Xcode 设置中的构建阶段。选择目标依赖项。添加您的框架目标(带有测试目标)。并清理项目并删除所有派生数据并运行项目。好简单。

【讨论】:

以上是关于Xcode - 创建了一个 iOS 框架,但不能在项目中使用它的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4.6 不能正确识别 Xcode 5.0 创建的项目的链接框架

Xcode 可以构建项目但不能在模拟器上运行

系统中缺少框架,但 Mac/iOS 上的 XCode 中没有

iOS 自定义框架开发?

XCode 找不到特定 iOS 库/框架项目的符号

Xcode 7.1 中 ios 的 Crashlytics,在 xcode 7 中添加框架后抛出多个错误