【问题标题】:CocoaPods Swift Linker ErrorCocoaPods Swift 链接器错误
【发布时间】:2014-12-17 00:06:18
【问题描述】:

我正在尝试在一个用 Swift 编写的 iOS 应用程序中通过 Lumberjack 使用 Loggly 库。我收到以下链接器错误:

undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_LogglyFormatter", referenced from:
  __TMaCSo15LogglyFormatter in AppDelegate.o
"_OBJC_CLASS_$_LogglyLogger", referenced from:
  __TMaCSo12LogglyLogger in AppDelegate.o
ld: symbol(s) not found for architecture x86_64

我为其他一些运行良好的库(不是 pod 库)使用了桥接头。

这是我的桥接头的内容:

#import <AFNetworking/AFNetworking.h>
#import <CocoaLumberjack/DDLog.h>
#import <LogglyLogger-CocoaLumberjack/LogglyLogger.h>
#import <LogglyLogger-CocoaLumberjack/LogglyFormatter.h>

最后是我的 Podfile 的内容:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0'
pod 'CocoaLumberjack'
pod 'AFNetworking'
pod 'LogglyLogger-CocoaLumberjack', :git => 'https://github.com/melke/LogglyLogger-CocoaLumberjack'

有人对此有什么建议吗?

【问题讨论】:

  • 我通过获取代码并将其直接集成到项目中解决了这个问题。这违背了 pod 的目的,但它奏效了。所以仍在寻找适当的解决方案。

标签: ios objective-c swift llvm cocoapods


【解决方案1】:

从 Cocoapods 0.25.0 开始,Xcode 配置维护 Pod 是在构建设置 ONLY_ACTIVE_ARCH 设置为 YES 的情况下构建的。你有两个选择:

  1. 确保为您的调试配置将“构建活动架构”设置为“是”
  2. 在 Debug 配置中将 cocoapods 的 Build Active Architecture 设置为 NO

因此,假设您执行了选项 1,导航到您的构建设置,您最终应该会得到如下结果:

收录自官方Troubleshooting Guide

这适用于从 Xcode 4 迁移项目的用户,或者仍在 使用 Xcode 4。

  1. Pods Xcode 项目现在将 ONLY_ACTIVE_ARCH 构建设置设置为 是在调试配置。你必须在你的 项目/目标,否则构建将失败。

  2. 确保您的 project/target 设置了 ARCHS 值,否则构建将失败。

  3. 从命令行构建 iOS 项目时,使用 xcodebuild Xcode 4 自带的工具,你需要完全禁用它 通过附加到您的构建命令进行设置:ONLY_ACTIVE_ARCH=NO。

【讨论】:

  • 它已经设置正确,甚至翻转它们也不起作用。
  • @Khirok 可可伐木工人支持 64 位目标吗?例如,如果您构建到 iPhone 5,它会工作吗?
  • 如果我编译到 iPhone 5 上也是一样。我之前在我的 5S 上用过 Obj-C 的应用程序,所以我知道它在那里工作。对于使用桥接标头进行链接,这似乎是一个奇怪的问题。
猜你喜欢
  • 1970-01-01
  • 2016-09-20
  • 2015-04-04
  • 2013-09-29
  • 2015-02-25
  • 2015-12-13
  • 2015-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多