Xcode 4.5:未定义符号的架构armv7s:

6
我对这个问题已经疯狂了。我的项目一直都很正常,但是在我添加了Facebook SDK之后,它给出了以下错误(这些错误让我删除armv6,希望之后能够正常工作,但当我继续检查时,它会给出更多的问题)。我现在同时使用arch armv7和armv7s,这就是它给出的错误。
    Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_ACAccountStore", referenced from:
      objc-class-ref in FacebookSDK(FBSession.o)
  "_SKStoreProductParameterITunesItemIdentifier", referenced from:
      -[RevMobStoreController openStoreWithITunesItemId:] in RevMobAds(RevMobStoreController.o)
  "_ACFacebookAudienceFriends", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_OBJC_CLASS_$_SKStoreProductViewController", referenced from:
      objc-class-ref in RevMobAds(RevMobStoreController.o)
  "_OBJC_CLASS_$_GADBannerView", referenced from:
      objc-class-ref in NewsViewController.o
      objc-class-ref in SportsViewController.o
      objc-class-ref in LecViewController.o
      objc-class-ref in AccViewController.o
      objc-class-ref in JokesViewController.o
      objc-class-ref in GamesViewController.o
      objc-class-ref in CaricViewController.o
      ...
  "_ACFacebookAppIdKey", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_ACAccountTypeIdentifierFacebook", referenced from:
      +[FBSession renewSystemAuthorization] in FacebookSDK(FBSession.o)
  "_ACFacebookAudienceKey", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_ACFacebookAudienceOnlyMe", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_kGADAdSizeSmartBannerPortrait", referenced from:
      -[NewsViewController shouldAutorotateToInterfaceOrientation:] in NewsViewController.o
      -[SportsViewController viewDidLoad] in SportsViewController.o
      -[LecViewController viewDidLoad] in LecViewController.o
      -[AccViewController viewDidLoad] in AccViewController.o
      -[JokesViewController viewDidLoad] in JokesViewController.o
      -[GamesViewController viewDidLoad] in GamesViewController.o
      -[CaricViewController viewDidLoad] in CaricViewController.o
      ...
  "_OBJC_CLASS_$_GADRequest", referenced from:
      objc-class-ref in NewsViewController.o
      objc-class-ref in SportsViewController.o
      objc-class-ref in LecViewController.o
      objc-class-ref in AccViewController.o
      objc-class-ref in JokesViewController.o
      objc-class-ref in GamesViewController.o
      objc-class-ref in CaricViewController.o
      ...
  "_ACFacebookPermissionsKey", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
  "_CGSizeFromGADAdSize", referenced from:
      -[NewsViewController shouldAutorotateToInterfaceOrientation:] in NewsViewController.o
      -[SportsViewController viewDidLoad] in SportsViewController.o
      -[LecViewController viewDidLoad] in LecViewController.o
      -[AccViewController viewDidLoad] in AccViewController.o
      -[JokesViewController viewDidLoad] in JokesViewController.o
      -[GamesViewController viewDidLoad] in GamesViewController.o
      -[CaricViewController viewDidLoad] in CaricViewController.o
      ...
  "_ACFacebookAudienceEveryone", referenced from:
      -[FBSession authorizeUsingSystemAccountStore:accountType:permissions:defaultAudience:isReauthorize:] in FacebookSDK(FBSession.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

你似乎正在使用一个预编译的静态库,其中并不包含 armv7s 切片。你粘贴的文本没有错误,你应该给我们正确的输出结果。 - ldiqual
抱歉,我已经编辑过了以展示错误。 - Mohamed Emad Hegab
好的,所以这是Facebook SDK。您使用编译库(类似于facebook.a)还是直接使用FB SDK源文件?如果您使用源文件,则应清除并重新构建项目。如果没有,请使用源文件。 - ldiqual
问题已解决,解决方法在这里:https://dev59.com/GmvXa4cB1Zd3GeqPJXUc - Mário Carvalho
您需要添加StoreKit.framework来解决Admob的问题。 - Luis Ascorbe
显示剩余3条评论
3个回答

4

作为一种临时解决方案,您可以从Xcode项目的架构中删除armv7s。将"$(ARCHS_STANDARD_32_BIT)"更改为"armv7"。当库更新后,请改回以重新添加armv7s支持。


2
Facebook SDK没有为armv7s编译,但是你可以自己编译。
在这里查看Liam Nichols的回答。

https://developers.facebook.com/bugs/107674376052717/

从 Git Hub 页面(facebook git hub)下载源代码副本 打开 Xcode 项目并在构建设置中将架构更改为 armv7、armv7s 关闭项目 转到 /scripts 并在终端中运行 ./build_all.sh 编译完成后,您可以在 builds/FacebookSDK.framework 中找到框架。

0

有效架构 部分中删除 armv7s,它就可以工作了。

构建设置 --> 架构 --> 有效架构

Xcode Build Settings


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接