jjzjj

ios - 适用于 iOS 的 Google+ 登录(Apple mach-o 链接器错误)

coder 2024-01-15 原文

早上好

我正在尝试将 Google Plus 登录集成到我的第一个 iOS 应用程序中,并按照 Google 在 https://developers.google.com/+/mobile/ios/sign-in 中提供的所有步骤进行操作。我在代码中没有任何错误,但是在编译项目时出现了错误:

我收到 18 个错误“Apple mach-o 链接器错误”,我不知道为什么,因为我遵循了每一步,一切似乎都是正确的。

下面是错误代码,我不知道怎么解决,希望有人能帮我解决。

      Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_ALAssetsLibrary", referenced from:
      objc-class-ref in GooglePlus(NSData+GPPAdditions.o)
      objc-class-ref in GooglePlus(UIDevice+GPPAdditions.o)
  "_kABPersonFirstNameProperty", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_ABAddressBookCopyArrayOfAllPeople", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_kABPersonEmailProperty", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_ABAddressBookGetPersonCount", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_ABPersonHasImageData", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_ABPersonCopyImageDataWithFormat", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_ABRecordCopyValue", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_ABMultiValueGetCount", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_ABAddressBookCreateWithOptions", referenced from:
      +[GPPAddressBook loadDeviceContactsWithHandler:] in GooglePlus(GPPAddressBook.o)
  "_ABMultiValueCopyValueAtIndex", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_MPMoviePlayerThumbnailImageKey", referenced from:
      -[GPPMediaPreviewView thumbnailImageRequestDidFinish:] in GooglePlus(GPPMediaPreviewView.o)
  "_MPMoviePlayerThumbnailImageRequestDidFinishNotification", referenced from:
      -[GPPMediaPreviewView initWithFrame:mediaAttachment:] in GooglePlus(GPPMediaPreviewView.o)
      -[GPPMediaPreviewView thumbnailImageRequestDidFinish:] in GooglePlus(GPPMediaPreviewView.o)
  "_OBJC_CLASS_$_CMMotionManager", referenced from:
      objc-class-ref in GooglePlus(GPPSpamSignal.o)
  "_ABAddressBookRequestAccessWithCompletion", referenced from:
      +[GPPAddressBook loadDeviceContactsWithHandler:] in GooglePlus(GPPAddressBook.o)
  "_kABPersonLastNameProperty", referenced from:
      ___48+[GPPAddressBook loadDeviceContactsWithHandler:]_block_invoke in GooglePlus(GPPAddressBook.o)
  "_OBJC_CLASS_$_MPMoviePlayerController", referenced from:
      objc-class-ref in GooglePlus(GPPMediaPreviewView.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

提前致谢。

最佳答案

第 3 步中的这个库 AssetsLibrary.framework 不包含在您的项目中,这就是您收到此错误的原因。

试试这些:

  1. 您需要将 AssetsLibrary 框架添加到目标的“Link Binary With Libraries”构建阶段。

  2. 尝试使用 Command+Shift+K 清理您的项目并再次添加所需的框架。希望它会开始工作

  3. 将文件复制到您的项目中,但忘记检查要将文件添加到的目标。解决: 打开正确目标的构建阶段,展开编译源并添加缺少的 .m 文件。

另一个原因,可能是:

  1. 您包含一个静态库,该库是为另一种体系结构构建的,例如 i386,您主机上的模拟器。解决:

如果您有多个来自库供应商的库文件要包含在项目中,您需要包含一个用于模拟器 (i386) 的文件和一个用于设备(​​例如 armv7)的文件。

关于ios - 适用于 iOS 的 Google+ 登录(Apple mach-o 链接器错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25154588/

有关ios - 适用于 iOS 的 Google+ 登录(Apple mach-o 链接器错误)的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  3. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  4. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  5. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  6. ruby - inverse_of 是否适用于 has_many? - 2

    当我使用has_one时,它​​工作得很好,但在has_many上却不行。在这里您可以看到object_id不同,因为它运行了另一个SQL来再次获取它。ruby-1.9.2-p290:001>e=Employee.create(name:'rafael',active:false)ruby-1.9.2-p290:002>b=Badge.create(number:1,employee:e)ruby-1.9.2-p290:003>a=Address.create(street:"123MarketSt",city:"SanDiego",employee:e)ruby-1.9.2-p290

  7. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  8. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  9. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  10. ruby - "undefined method"用于 rails 模型 - 2

    我正在使用带有Rails的Devise,我想添加一个方法“getAllComments”,所以我这样写:classUser在我的Controller中:defdashboard@user=current_user@comments=@user.getAllComments();end当我访问我的url时,我得到了undefinedmethod`getAllComments'for#我做错了什么?谢谢 最佳答案 因为getAllComments是一个类方法,而您正试图将其作为实例方法访问。您要么需要访问它:User.getAllCom

随机推荐