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

标签 ios admob

我正在将 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/

相关文章:

android - 是否有必要在 Android 应用程序上使用 com.google.android.gms.ads.AdActivity?

xamarin.forms - 使用 Xamarin.Forms 的横幅广告

ios - 在 iOS 上显示 AdMob 屏幕而不是加载图像

ios - 如何在回合制循环中实现框架功能 touchDown?

ios - 为什么日期格式化程序崩溃?

ios - 如何将按钮的隐藏状态保存为 NSUserDefault?

ios - 如何让 AdMod 显示实际广告而不是测试广告以及它是如何工作的?

使用 Admob 的 Android Tabview 布局

ios - 用户卸载 iPhone 应用程序时的通知

ios - iTunes Connect中的入门定价适用于iOS 11.2及更低版本的用户