ofxFern : Missing frameworks on macOS 10.13

Hi there.

Just to jot this down for the next person.
Had an issue with the ofxFernCameraDemo like so :

Undefined symbols for architecture i386:
“_CVDisplayLinkGetNominalOutputVideoRefreshPeriod”, referenced from:
_vidmodeFromCGDisplayMode in glfw3.a(cocoa_monitor.m.o)
“_CVDisplayLinkCreateWithCGDisplay”, referenced from:
__glfwSetVideoMode in glfw3.a(cocoa_monitor.m.o)
__glfwPlatformGetVideoModes in glfw3.a(cocoa_monitor.m.o)
“_CVDisplayLinkRelease”, referenced from:
__glfwSetVideoMode in glfw3.a(cocoa_monitor.m.o)
__glfwPlatformGetVideoModes in glfw3.a(cocoa_monitor.m.o)
“_kCVPixelBufferPixelFormatTypeKey”, referenced from:
-[OSXVideoGrabber initCapture:capWidth:capHeight:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“.objc_class_name_AVCaptureSession”, referenced from:
pointer-to-literal-objc-class-name in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“.objc_class_name_AVCaptureVideoDataOutput”, referenced from:
pointer-to-literal-objc-class-name in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“.objc_class_name_AVCaptureDevice”, referenced from:
pointer-to-literal-objc-class-name in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_kCVPixelBufferHeightKey”, referenced from:
-[OSXVideoGrabber initCapture:capWidth:capHeight:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CVPixelBufferLockBaseAddress”, referenced from:
-[OSXVideoGrabber captureOutput:didOutputSampleBuffer:fromConnection:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“.objc_class_name_AVCaptureDeviceInput”, referenced from:
pointer-to-literal-objc-class-name in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“.objc_class_name_AVFrameRateRange”, referenced from:
pointer-to-literal-objc-class-name in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CVPixelBufferGetBytesPerRow”, referenced from:
-[OSXVideoGrabber captureOutput:didOutputSampleBuffer:fromConnection:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CVPixelBufferGetWidth”, referenced from:
-[OSXVideoGrabber captureOutput:didOutputSampleBuffer:fromConnection:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CVPixelBufferGetBaseAddress”, referenced from:
-[OSXVideoGrabber captureOutput:didOutputSampleBuffer:fromConnection:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_kCVPixelBufferWidthKey”, referenced from:
-[OSXVideoGrabber initCapture:capWidth:capHeight:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CMSampleBufferGetImageBuffer”, referenced from:
-[OSXVideoGrabber captureOutput:didOutputSampleBuffer:fromConnection:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_vImageConvert_BGRA8888toRGB888”, referenced from:
-[OSXVideoGrabber captureOutput:didOutputSampleBuffer:fromConnection:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_AVMediaTypeVideo”, referenced from:
-[OSXVideoGrabber initCapture:capWidth:capHeight:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
-[OSXVideoGrabber listDevices] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CMVideoFormatDescriptionGetDimensions”, referenced from:
-[OSXVideoGrabber initCapture:capWidth:capHeight:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CVPixelBufferGetHeight”, referenced from:
-[OSXVideoGrabber captureOutput:didOutputSampleBuffer:fromConnection:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
“_CMTimeMake”, referenced from:
-[OSXVideoGrabber initCapture:capWidth:capHeight:] in openFrameworksDebug.a(ofAVFoundationGrabber.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -
v to see invocation)

Managed to get it working by adding the following frameworks to the project

  • CoreMedia
  • Accelerate
  • CoreVideo
  • AVFoundation
  • AVKit

like so

Im not sure why but it also complained about the system architecture, and I had to delete X86 here

I also set all the targets to 10.13 but im not sure if this was necessary
like so

hope this helps someone.