Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

iOS6 + Opencv (Latest Compile) Linker Only for classes in Feature2D module

Hi,

So I managed to successfully compile the latest opencv source and generate the opencv2.framework. I also successfully implemented this tutorial (http://docs.opencv.org/trunk/doc/tutorials/ios/video_processing/video_processing.html).

I then started to modify my code to add in some feature detection code. I included the module #import <opencv2 features2d="" features2d.hpp=""> and started to code including some key classes and methods needed. The intellisense recognised these classes as I started to type e.g.

Algorithm::create<FeatureDetector>
BRISK BRISKD();
BRISKD.create("Feature2D.BRISK");
BRISKD.detect();
BRISKD.compute()

But then when I tried to build I go linker errors for these classes and method calls. Im confused as I know I have the latest version of opencv framework as the video tutorial all worked. The specific errors are shown below. Can anyone suggest why I have problems using the Feature2D module?

    Ld /Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos/Cukamo.app/Cukamo normal armv7
    cd "/Users/mh/Documents/iOS Projects/Business/Cukamo"
    setenv IPHONEOS_DEPLOYMENT_TARGET 6.0
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk -L/Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos "-L/Users/mh/Documents/iOS Projects/Business/Cukamo/Cukamo/tesseract-ios-lib/lib" "-L/Users/mh/Documents/iOS Projects/Business/Cukamo/Cukamo" -F/Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos "-F/Users/mh/Documents/iOS Projects/Business/Cukamo" "-F/Users/mh/Documents/iOS Projects/Business/Cukamo/../../../../opencv/ios" -filelist /Users/,h/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Intermediates/Cukamo.build/Debug-iphoneos/Cukamo.build/Objects-normal/armv7/Cukamo.LinkFileList -dead_strip -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=6.0 -framework opencv2 -lc++ -framework CoreMedia -framework CoreVideo -framework CoreGraphics -framework QuartzCore -framework CoreImage -framework AVFoundation -framework AssetsLibrary -framework Accelerate -framework UIKit -framework Foundation -llept -ltesseract_all -o /Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos/Cukamo.app/Cukamo

Undefined symbols for architecture armv7:
  "cv::DescriptorExtractor::compute(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat&) const", referenced from:
      -[ViewController processImage:] in ViewController.o
  "cv::Algorithm::_create(std::string const&)", referenced from:
      cv::Ptr<cv::FeatureDetector> cv::Algorithm::create<cv::FeatureDetector>(std::string const&) in ViewController.o
      cv::Ptr<cv::DescriptorExtractor> cv::Algorithm::create<cv::DescriptorExtractor>(std::string const&) in ViewController.o
  "cv::Feature2D::create(std::string const&)", referenced from:
      -[ViewController processImage:] in ViewController.o
  "cv::FeatureDetector::detect(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat const&) const", referenced from:
      -[ViewController processImage:] in ViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

iOS6 + Opencv (Latest Compile) Linker Only for classes in Feature2D module

Hi,

So I managed to successfully compile the latest opencv source and generate the opencv2.framework. I also successfully implemented this tutorial (http://docs.opencv.org/trunk/doc/tutorials/ios/video_processing/video_processing.html).

I then started to modify my code to add in some feature detection code. I included the module #import <opencv2 features2d="" features2d.hpp=""> and started to code including some key classes and methods needed. The intellisense recognised these classes as I started to type e.g.

Algorithm::create<FeatureDetector>
BRISK BRISKD();
BRISKD.create("Feature2D.BRISK");
BRISKD.detect();
BRISKD.compute()

But then when I tried to build I go got linker errors for these classes and method calls. Im confused as I know I have the latest version of opencv framework as the video tutorial all worked. worked fine. The specific errors are shown below. Can anyone suggest why I have problems using the Feature2D module?module on iOS?

    Ld /Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos/Cukamo.app/Cukamo normal armv7
    cd "/Users/mh/Documents/iOS Projects/Business/Cukamo"
    setenv IPHONEOS_DEPLOYMENT_TARGET 6.0
    setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk -L/Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos "-L/Users/mh/Documents/iOS Projects/Business/Cukamo/Cukamo/tesseract-ios-lib/lib" "-L/Users/mh/Documents/iOS Projects/Business/Cukamo/Cukamo" -F/Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos "-F/Users/mh/Documents/iOS Projects/Business/Cukamo" "-F/Users/mh/Documents/iOS Projects/Business/Cukamo/../../../../opencv/ios" -filelist /Users/,h/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Intermediates/Cukamo.build/Debug-iphoneos/Cukamo.build/Objects-normal/armv7/Cukamo.LinkFileList -dead_strip -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=6.0 -framework opencv2 -lc++ -framework CoreMedia -framework CoreVideo -framework CoreGraphics -framework QuartzCore -framework CoreImage -framework AVFoundation -framework AssetsLibrary -framework Accelerate -framework UIKit -framework Foundation -llept -ltesseract_all -o /Users/mh/Library/Developer/Xcode/DerivedData/Cukamo-fzqnynxgvslzftbswmivdfpiuqdy/Build/Products/Debug-iphoneos/Cukamo.app/Cukamo

Undefined symbols for architecture armv7:
  "cv::DescriptorExtractor::compute(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat&) const", referenced from:
      -[ViewController processImage:] in ViewController.o
  "cv::Algorithm::_create(std::string const&)", referenced from:
      cv::Ptr<cv::FeatureDetector> cv::Algorithm::create<cv::FeatureDetector>(std::string const&) in ViewController.o
      cv::Ptr<cv::DescriptorExtractor> cv::Algorithm::create<cv::DescriptorExtractor>(std::string const&) in ViewController.o
  "cv::Feature2D::create(std::string const&)", referenced from:
      -[ViewController processImage:] in ViewController.o
  "cv::FeatureDetector::detect(cv::Mat const&, std::vector<cv::KeyPoint, std::allocator<cv::KeyPoint> >&, cv::Mat const&) const", referenced from:
      -[ViewController processImage:] in ViewController.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)