I'm missing something minor here in my project using the OpenCV framework from a working demo.
Steps to reproduce:
Download the example app from http://aptogo.co.uk/2011/09/opencv-framework-for-ios/
Create a new Titainum iOS module with titanium create --platform=iphone --type=module --dir=. --name=opencv --id=opencv
Open the XCode project, drag in the OpenCV framework from the FaceTracker app and the other required frameworks.
Add OTHER_LDFLAGS=$(inherited) -framework OpenCV to module.xcconfig
Create new TiUIView and TiUIViewProxy classes named OpencvView and OpencvViewProxy.
In the new OpencvView class, instantiate a UIViewController that uses OpenCV.
The build will build the Titanium module, but when I try to run the module test harness, I get these errors for OpenCV objects:
Undefined symbols for architecture i386: "_CMSampleBufferGetImageBuffer", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CMSampleBufferGetOutputPresentationTimeStamp", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CMTimeMake", referenced from: -[VideoCaptureViewController createCaptureSessionForCamera:qualityPreset:grayscale:] in libopencv.a(VideoCaptureViewController.o) "_CVPixelBufferGetBaseAddress", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CVPixelBufferGetBaseAddressOfPlane", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CVPixelBufferGetHeight", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CVPixelBufferGetPixelFormatType", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CVPixelBufferGetWidth", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CVPixelBufferLockBaseAddress", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "_CVPixelBufferUnlockBaseAddress", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) "cv::_InputArray::_InputArray(cv::Mat const&)", referenced from: -[DemoVideoCaptureViewController processFrame:videoRect:videoOrientation:] in libopencv.a(DemoVideoCaptureViewController.o) "cv::_OutputArray::_OutputArray(cv::Mat&)", referenced from: -[DemoVideoCaptureViewController processFrame:videoRect:videoOrientation:] in libopencv.a(DemoVideoCaptureViewController.o) "cv::CascadeClassifier::load(std::string const&)", referenced from: -[DemoVideoCaptureViewController viewDidLoad] in libopencv.a(DemoVideoCaptureViewController.o) "cv::CascadeClassifier::CascadeClassifier()", referenced from: -[DemoVideoCaptureViewController .cxx_construct] in libopencv.a(DemoVideoCaptureViewController.o) "cv::CascadeClassifier::~CascadeClassifier()", referenced from: -[DemoVideoCaptureViewController .cxx_destruct] in libopencv.a(DemoVideoCaptureViewController.o) "cv::Mat::deallocate()", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) -[UIImage(UIImage_OpenCV) CVMat] in libopencv.a(UIImage+OpenCV.o) -[UIImage(UIImage_OpenCV) CVGrayscaleMat] in libopencv.a(UIImage+OpenCV.o) "cv::Mat::create(int, int const*, int)", referenced from: -[UIImage(UIImage_OpenCV) CVMat] in libopencv.a(UIImage+OpenCV.o) -[UIImage(UIImage_OpenCV) CVGrayscaleMat] in libopencv.a(UIImage+OpenCV.o) "cv::flip(cv::_InputArray const&, cv::_OutputArray const&, int)", referenced from: -[DemoVideoCaptureViewController processFrame:videoRect:videoOrientation:] in libopencv.a(DemoVideoCaptureViewController.o) "cv::resize(cv::_InputArray const&, cv::OutputArray const&, cv::Size, double, double, int)", referenced from: -[DemoVideoCaptureViewController processFrame:videoRect:videoOrientation:] in libopencv.a(DemoVideoCaptureViewController.o) "cv::fastFree(void*)", referenced from: -[VideoCaptureViewController captureOutput:didOutputSampleBuffer:fromConnection:] in libopencv.a(VideoCaptureViewController.o) -[UIImage(UIImage_OpenCV) CVMat] in libopencv.a(UIImage+OpenCV.o) -[UIImage(UIImage_OpenCV) CVGrayscaleMat] in libopencv.a(UIImage+OpenCV.o) "cv::transpose(cv::_InputArray const&, cv::_OutputArray const&)", referenced from: -[DemoVideoCaptureViewController processFrame:videoRect:videoOrientation:] in libopencv.a(DemoVideoCaptureViewController.o) "_kCVPixelBufferPixelFormatTypeKey", referenced from: -[VideoCaptureViewController createCaptureSessionForCamera:qualityPreset:grayscale:] in libopencv.a(VideoCaptureViewController.o) ld: symbol(s) not found for architecture i386 clang: error: linker command failed with exit code 1 (use -v to see invocation)