【问题标题】:How can code using a framework class run without the framework?使用框架类的代码如何在没有框架的情况下运行?
【发布时间】:2014-05-07 08:25:26
【问题描述】:

我正在运行一个使用 EAAccessoryManager 的应用程序,它应该只能通过 ExternalAccessory 框架使用。然而,它在没有 ExternalAccessory 包含在要链接的框架列表中的情况下编译和运行。它也不会被任何其他目标加载到 Xcode 中。这怎么可能?我很困惑。

我很好奇,因为我有另一个项目加载了一个静态库,该库也引用了 EAAccessoryManager,在 的情况下,应用程序将无法编译,并以错误 Undefined symbols for architecture i386 退出。这更符合我的期望。造成这种差异的原因是什么?

【问题讨论】:

  • 查看静态链接和动态链接的区别,您会找到答案。我敢打赌,一旦进入尝试使用该功能的部分,它就会出现问题。
  • 不,应用程序使用 EAAccessoryManager 中的类没有问题,即使 ExternalAccessory 未在要链接的框架中列出。
  • 那是奇怪的行为。您必须从比我了解更多的人那里得到答案。
  • 工作示例是否在设备上运行?因为不工作的例子听起来像是在模拟器上运行。
  • 您能在某处使用新的@import(自动链接/语义导入)功能吗?

标签: ios frameworks linker external-accessory


【解决方案1】:

可能是链接器构建设置而不是链接构建阶段。

【讨论】:

  • 糟糕,我的意思是将此作为评论发布。愚蠢的响应式网络版本。
【解决方案2】:

在构建设置中,在“Apple LLVM 5.1 - 语言 - 模块”部分中,启用了“自动链接框架”:

这是我在阅读this post on @import 时从未发现过的新功能(感谢@RhythmicFistman 的提示!)。当我将该设置更改为“否”时,我得到了预期的链接器错误。

【讨论】:

    猜你喜欢
    • 2016-12-04
    • 1970-01-01
    • 2015-04-07
    • 2016-10-27
    • 2020-09-20
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多