Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Try Sample AVCAM from apple found error

When I tried sample AVCAM swift with Xcode Version 9.0 beta 5 (9M202q). I found errors.

Undefined symbols for architecture x86_64:
"__T0So22AVCapturePhotoSettingsC12AVFoundation01_abC16SwiftNativeTypesACWP", referenced from: __T05AVCam20CameraViewControllerC12capturePhoto33_F53A4CF98D799BDDCA6C04BA14C549A1LLySo8UIButtonCFyycfU_ in CameraViewController.o
"__T012AVFoundation39_AVCapturePhotoSettingsSwiftNativeTypesPAAE016availablePreviewc11PixelFormatG0Says6UInt32VGfg", referenced from: __T05AVCam20CameraViewControllerC12capturePhoto33_F53A4CF98D799BDDCA6C04BA14C549A1LLySo8UIButtonCFyycfU_ in CameraViewController.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

What is the problem? and How can fix that?

like image 897
David Sujarwadi Avatar asked Aug 14 '17 06:08

David Sujarwadi


3 Answers

Update 15 Sept 2017:

Official response from Apple:

Our apologies. For apps using Swift 3.2 or Swift 4.0, several AVFoundation capture APIs (public extensions on external protocol) were inadvertently marked private in Xcode 9. The following AVFoundation API are temporarily unavailable:

  • AVCaptureDevice.Format.supportedColorSpaces

  • AVCaptureDevice.supportedFlashModes

  • AVCapturePhotoOutput.availablePhotoPixelFormatTypes

  • AVCapturePhotoOutput.availableRawPhotoPixelFormatTypes

  • AVCapturePhotoSettings.availablePreviewPhotoPixelFormatTypes

    As a workaround you can use the SwiftPrivate versions of these API by prepending each API with double underscore (__). For example, change AVCaptureDevice.Format.supportedColorSpaces to AVCaptureDevice.Format.__supportedColorSpaces.

I can confirm using __availablePreviewPhotoPixelFormatTypes fixes the build errors.

E.g.

let settings = AVCapturePhotoSettings()
let previewPixelType = settings.__availablePreviewPhotoPixelFormatTypes.first!

Source: https://forums.developer.apple.com/thread/86810#259270


Update 14 Sept 2017:

Issue reoccurs in Xcode 9.0 GM (9A235).

Filed new bug report for reference: rdar://34420979


Previous:

Update: Fixed in Xcode Beta 6.

Filed a bug report rdar://33935456 for Xcode Version 9.0 beta 5 (9M202q).

like image 173
gbhall Avatar answered Nov 19 '22 00:11

gbhall


Xcode 9.0 beta 5 (9M202q) definitely has a problem with AVCam Swift revision 2017-06-06. Fortunately the problem is isolated to these three lines in CameraViewController.swift:

if !photoSettings.availablePreviewPhotoPixelFormatTypes.isEmpty {
    photoSettings.previewPhotoFormat = [kCVPixelBufferPixelFormatTypeKey as String: photoSettings.availablePreviewPhotoPixelFormatTypes.first!]
}

Comment out the above code and AVCam will compile and run fine on a device running the latest iOS 11 beta.

like image 9
Andrew Herbert Avatar answered Nov 18 '22 23:11

Andrew Herbert


This appears to be an Xcode bug. The sample code builds fine in Xcode 9.0 beta (9M136h). Reported to Apple as rdar://33903950.

Update: Radar is now closed. Issue is fixed in Xcode 9.0 Beta 6 (9M214v).

like image 1
idz Avatar answered Nov 19 '22 00:11

idz