我正在使用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。
答案 0 :(得分:0)
我从这个链接得到了解决方案: MPMusicPlayerController and setNowPlayingItem
解决方案是将MediaPlayer.framework添加到链接的框架和库。