【问题标题】:iOS simulator linker command failediOS 模拟器链接器命令失败
【发布时间】:2014-11-02 16:10:54
【问题描述】:

我试图在模拟器上启动我的 iOS 应用程序,但它不起作用。不过,在手机上运行该应用程序可以正常工作。它与我的 admon 集成有关。之前模拟器运行流畅。我正在使用 Xcode 6.1。

我添加了所有必需的框架:

AdSupport  
AudioToolbox  
AVFoundation  
CoreGraphics  
CoreTelephony  
EventKit
EventKitUI 
MessageUI
StoreKit
SystemConfiguration
as well as libGoogleAdMobAds.a

我得到的错误是:

ld: warning: ignoring file /Users/XXXXXXX/Documents/app1/app1/AdSupport.framework/AdSupport, missing required architecture i386 in file /Users/XXXXXXX/Documents/app1/app1/AdSupport.framework/AdSupport (3 slices)
Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_ASIdentifierManager", referenced from:
      objc-class-ref in libGoogleAdMobAds.a(GADDevice.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

【问题讨论】:

  • 在您的项目中添加 AdSupport.framework。
  • 已添加。但模拟器因给定错误而失败
  • 在您的问题中包含您在项目中添加的所有框架列表。如果没有缺少任何框架,请尝试再次添加 libGoogleAdMobAds.a
  • 将所有框架添加到我的帖子中
  • 参考 Akshay 在 stackoverflow.com/questions/6984368/… 中给出的答案

标签: ios xcode linker admob ios-simulator


【解决方案1】:

进入项目设置中的“信息”并清除库搜索路径,然后重新添加 libGoogleAdMobAds.a 框架

【讨论】:

    【解决方案2】:

    该库很可能不包含任何 i386 二进制切片。它可能包含设备切片——3 个“iPhone”架构:armv7、armv7s、arm64——但不包含在您的计算机上运行的模拟器架构。 由于找不到二进制切片,链接器缺少使 i386 可执行的符号,因此无法在模拟器中运行。

    【讨论】:

    • 感谢 Dominik 和 acoomas,但显然这个存档支持 armv7、armv7s、u386m x86_64 和 arm64)所以这不应该是问题
    • 我想我找到了问题所在!缺少所需切片的不是 libGoogleAdMobAds.a,而是 AdSupport.framework!如果我在框架内运行文件 AdSupport,我只得到 3 个切片,缺少 i386!那么我在哪里可以获得完整的框架呢? (再次感谢文件命令,我是新手)
    【解决方案3】:

    您从哪里获得 AdSupport.framework?我现在意识到它在您的 Documents 目录中。

    通常你应该从 Xcode 链接目标,方法是进入目标设置:

    然后构建阶段> 将二进制文件与库链接:

    搜索“AdSupport”,应该在iOS8.1下:

    图书馆应该在那里:

    【讨论】:

      猜你喜欢
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 2016-10-18
      • 2017-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多