gpt4 book ai didi

ios - 我可以在不使用 -all_load 链接器标志的情况下使用适用于 iOS 的 adMob 库吗

转载 作者:行者123 更新时间:2023-11-29 04:28:36 24 4
gpt4 key购买 nike

我正在将 google 提供的 adMob 添加到我的 iOS 应用程序中,但我陷入了安装的这一部分:在项目构建信息中的“其他链接器标志”下添加 -all_load

如果我添加该标志,则另一个第三方库会中断并给出错误消息:

ld:/Users/josh/Projects/app/libs/libvt_universal.a(vw_ctype-3279EF26D0C25F3A.o) 和/Users/josh/Projects/app/libs/libvt_universal.a(vw_ctype-34AB9EC0B46D954C) 中存在重复符号 _vw_chartype_table_p。 o) 对于 i386 架构

有没有办法在不使用 -all_load 的情况下使用 adMob 库?例如,我尝试过 -force_load $(SOURCE_ROOT)/adMob/libGoogleAdMobAds.a但ld:找不到文件:/Users/USERNAME/Desktop/latest/bbbb/APPNAME/adMob/libGoogleAdMobAds.a

最佳答案

Google 建议使用 -all_load 的原因是他们在代码中使用类别,并且 llvm 链接器无法正确加载带有类别的 Objective-C 库(4.3 xcode 中就是这种情况,不确定 4.4 中的情况如何)较新的 clang)。

所以,我想如果你足够勇敢,你可以尝试删除 all_load 标志。它应该构建得很好。如果错误没有得到修复,那么当您运行代码时,将会发生的情况是,它会崩溃,因为库使用的任何类别都不会被加载。无论如何,这可能是一件好事,因为您的项目应该构建,如果没有构建,您可以先解决这些问题。

我建议您使用 -force_load,它让 llvm 加载 adMob 库中的类别(以及其他内容)。要使用它,您必须有一个到库的完全限定路径(即以“/”开始)。显然,如果您使用终端并运行:

ls -l/Users/USERNAME/Desktop/latest/bbbb/APPNAME/adMob/libGoogleAdMobAds.a

它会失败。因此,现在输入正确的路径(硬编码),看看是否可以让项目首先构建,然后运行。如果确实如此,您稍后可以找出适当的 $(VAR) 来使用它在您的项目中查找它。

关于ios - 我可以在不使用 -all_load 链接器标志的情况下使用适用于 iOS 的 adMob 库吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12017305/

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