我想玩OpenCV cv::SimpleBlobDetector
,但在编译代码时出现以下错误:
Ld /Users/dom/Library/Developer/Xcode/DerivedData/blob-test-opencv-dgtflkyexnsjekbwuxnuoisqknux/Build/Products/Debug/blob-test-opencv.app/Contents/MacOS/blob-test-opencv normal x86_64
cd /Users/dom/Desktop/blob-test-opencv
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ \
-arch x86_64 \
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk \
-L/Users/dom/Library/Developer/Xcode/DerivedData/blob-test-opencv-dgtflkyexnsjekbwuxnuoisqknux/Build/Products/Debug \
-L/usr/local/Cellar/opencv/2.4.3/lib \
-F/Users/dom/Library/Developer/Xcode/DerivedData/blob-test-opencv-dgtflkyexnsjekbwuxnuoisqknux/Build/Products/Debug \
-filelist /Users/dom/Library/Developer/Xcode/DerivedData/blob-test-opencv-dgtflkyexnsjekbwuxnuoisqknux/Build/Intermediates/blob-test-opencv.build/Debug/blob-test-opencv.build/Objects-normal/x86_64/blob-test-opencv.LinkFileList \
-mmacosx-version-min=10.7 \
-fobjc-arc \
-fobjc-link-runtime \
-stdlib=libc++ \
-lopencv_calib3d.2.4.3 \
-lopencv_contrib.2.4.3 \
-lopencv_core.2.4.3 \
-lopencv_features2d.2.4.3 \
-lopencv_flann.2.4.3 \
-lopencv_gpu.2.4.3 \
-lopencv_highgui.2.4.3 \
-lopencv_imgproc.2.4.3 \
-lopencv_legacy.2.4.3 \
-lopencv_ml.2.4.3 \
-lopencv_nonfree.2.4.3 \
-lopencv_objdetect.2.4.3 \
-lopencv_photo.2.4.3 \
-lopencv_stitching.2.4.3 \
-lopencv_ts.2.4.3 \
-lopencv_video.2.4.3 \
-lopencv_videostab.2.4.3 \
-framework Cocoa -o /Users/dom/Library/Developer/Xcode/DerivedData/blob-test-opencv-dgtflkyexnsjekbwuxnuoisqknux/Build/Products/Debug/blob-test-opencv.app/Contents/MacOS/blob-test-opencv
Undefined symbols for architecture x86_64:
"cv::drawKeypoints(cv::Mat const&, std::__1::vector<cv::KeyPoint, std::__1::allocator<cv::KeyPoint> > const&, cv::Mat&, cv::Scalar_<double> const&, int)", referenced from:
BlobTest::detectBlobs(cv::Mat) in blob-detector.o
"cv::FeatureDetector::detect(cv::Mat const&, std::__1::vector<cv::KeyPoint, std::__1::allocator<cv::KeyPoint> >&, cv::Mat const&) const", referenced from:
BlobTest::detectBlobs(cv::Mat) in blob-detector.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我写的代码如下:
cv::SimpleBlobDetector::Params params;
params.minDistBetweenBlobs = 10.0;
params.filterByArea = true;
params.minArea = 500.0;
params.maxArea = 1500.0;
cv::SimpleBlobDetector myBlobDetector( params );
std::vector<cv::KeyPoint> myBlobs;
myBlobDetector.detect( image, myBlobs );
cv::Mat blobImg;
cv::drawKeypoints( image, myBlobs, blobImg );
我的标头前缀文件包含OpenCV:
#ifdef __cplusplus
#import "opencv2/opencv.hpp"
#endif
我在OSX 10.7.5上使用OpenCV 2.43(通过brew)在4.52上运行Xcode。
据我所知,所有必需的lib都正确链接(尤其是opencv_features2d.2.4.3
),OpenCV是为我的64位系统编译的。其他OpenCV代码一直在正常工作......我错过了什么吗?
答案 0 :(得分:3)
在xcode的左侧,选择您的项目名称。在右侧窗口,转到
Buil Settings>Build Options> Compiler for C/C++/Objective-C
将其从Apple LLVM Compiler
更改为LLVM GCC 4.2
。
干杯,
礼
答案 1 :(得分:-1)
上述答案对我不起作用。
转到构建设置&gt; Apple LLVM 5.0 - 语言 - C ++&gt; C ++标准库并选择libc ++