架构x86_64的未定义符号:MPMusicPlayerController

时间:2017-03-31 12:55:58

标签: ios swift

我正在使用XCode 8.3和Swift 3。

我收到与AudioToolboxFramework和x86_64架构相关的以下错误:

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_MPMusicPlayerController", referenced from:
      objc-class-ref in libdtdev.a(AudioStream.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我的项目面向iOS 10.3,在构建设置中,架构列为: Standard Architecture (armv7, arm64) - $(ARCH_STANDARD)

有效的架构是: arm64 armv7 armv7s

对于设置Build Active Architectures Only,我为DEBUG设置为YES,为RELEASE设置为NO

有谁能告诉我为什么我仍然收到与x86_64有关的错误?它可能来自另一个框架吗?

我的Podfile包含:

pod 'Alamofire', '~> 4.4'
pod 'SwiftyJSON'
pod 'Fabric'
pod 'Crashlytics'
pod 'ReachabilitySwift'

实际上,我刚刚将DEBUG的Build Active Architectures Only更改为NO并且出现了很多错误No such module 'ReachabilitySwift',所以它可能与该库有关?如果我从AudioToolbox.framework删除General -> Linked Frameworks and Libraries,我也会收到同样的错误。

另外,我跑了: lipo -info ./MyProject/Library/libdtdev.a

得到了这个: Architectures in the fat file: ./MyProject/Library/libdtdev.a are: armv7 i386 x86_64 arm64

所以肯定有一些东西定义了x86_64 arch。

1 个答案:

答案 0 :(得分:0)

我从这个链接得到了解决方案: MPMusicPlayerController and setNowPlayingItem

解决方案是将MediaPlayer.framework添加到链接的框架和库。