gpt4 book ai didi

objective-c - 如何弱导入一个类从一个静态库到另一个库(Objective-C)

转载 作者:太空狗 更新时间:2023-10-30 03:54:01 24 4
gpt4 key购买 nike

我有一个静态库,我们称它为 libSuperCool.a。我希望在其中使用 Millennial Media 的 SDK,libMMSDK.a。现在出于个人原因,我希望我的库不吸收该 SDK 的任何代码,并且我希望任何使用 libSuperCool 的应用程序都能够在链接或不链接 libMMSDK.a 的情况下进行编译;因此,libSuperCool 不会链接到 libMMSDK。

默认情况下,libSuperCool 中对 libMMSDK 的任何引用都是强引用,需要链接 libMMSDK,否则无法成功链接可执行文件。例如,我的一个源文件创建了 MMRequest * 类型的变量。

nm -m libSuperCool.a |grep MMReq
(undefined) external _OBJC_CLASS_$_MMRequest

我在网上找到了一篇非常有趣的帖子,它解释了如何将 ObjC 类引用转换为弱引用:通过在 .m 文件中使用 asm(".weak_reference _OBJC_CLASS_$_MMRequest");,这样的引用会变弱。

nm -m libSuperCool.a |grep MMReq
(undefined) weak external _OBJC_CLASS_$_MMRequest

但是在这样做之后,我尝试构建一个链接 libSuperCool 的简单应用程序。我仍然在 _OBJC_CLASS_$_MMRequest 上收到 undefined symbol 错误。

是否需要在链接时解析符号?如果是,为什么?我可以很容易地将我的变量声明为 id 并得到我的最终结果,毕竟这是 Objective-C。

最佳答案

来自 glandium.org :

-undefined dynamic_lookup 添加到其他链接器标志。

关于objective-c - 如何弱导入一个类从一个静态库到另一个库(Objective-C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21488896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com