作者:sharon_chan的秘密花园 | 来源:互联网 | 2023-01-23 12:13
当我尝试使用Xcode版本9.0 beta 5(9M202q)的样本AVCAM swift时.我发现了错误.
对于架构x86_64的未定义的符号:
"__T0So22AVCapturePhotoSettingsC12AVFoundation01_abC16SwiftNativeTypesACWP",从引用:__T05AVCam20CameraViewControllerC12capturePhoto33_F53A4CF98D799BDDCA6C04BA14C549A1LLySo8UIButtonCFyycfU_在CameraViewController.o
"__T012AVFoundation39_AVCapturePhotoSettingsSwiftNativeTypesPAAE016availablePreviewc11PixelFormatG0Says6UInt32VGfg",从引用:__T05AVCam20CameraViewControllerC12capturePhoto33_F53A4CF98D799BDDCA6C04BA14C549A1LLySo8UIButtonCFyycfU_在CameraViewController.o LD:符号(多个)未找到架构x86_64的铛:错误:连接器命令与出口失败代码1(使用-v查看调用)
问题是什么?以及如何解决这个问题?
1> gbhall..:
2017年9月15日更新:
Apple的官方回应:
我们的歉意.对于使用Swift 3.2或Swift 4.0的应用程序,几个AVFoundation捕获API(外部协议上的公共扩展)在Xcode 9中无意中被标记为私有.以下AVFoundation API暂时不可用:
AVCaptureDevice.Format.supportedColorSpaces
AVCaptureDevice.supportedFlashModes
AVCapturePhotoOutput.availablePhotoPixelFormatTypes
AVCapturePhotoOutput.availableRawPhotoPixelFormatTypes
AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes
作为一种解决方法,您可以通过在每个API前加双下划线(__
)来使用这些API的SwiftPrivate版本.例如,更改AVCaptureDevice.Format.supportedColorSpaces
为
AVCaptureDevice.Format.__supportedColorSpaces
.
我可以确认使用__availablePreviewPhotoPixelFormatTypes
修复构建错误.
例如
let settings = AVCapturePhotoSettings()
let previewPixelType = settings.__availablePreviewPhotoPixelFormatTypes.first!
资料来源:https://forums.developer.apple.com/thread/86810#259270
2017年9月14日更新:
问题在Xcode 9.0 GM(9A235)中重新出现.
提交新的bug报告供参考: rdar://34420979
以前:
更新:已在Xcode Beta 6中修复.
提交了rdar://33935456
Xcode版本9.0 beta 5(9M202q)的错误报告.
2> Andrew Herbe..:
Xcode 9.0 beta 5(9M202q)肯定存在AVCam Swift修订版2017-06-06的问题.幸运的是,问题与以下三条线隔离CameraViewController.swift
:
if !photoSettings.availablePreviewPhotoPixelFormatTypes.isEmpty {
photoSettings.previewPhotoFormat = [kCVPixelBufferPixelFormatTypeKey as String: photoSettings.availablePreviewPhotoPixelFormatTypes.first!]
}
注释掉上面的代码,AVCam将在运行最新iOS 11 beta的设备上编译并运行良好.