OpenCV与xcode错误:架构x86_64的未定义符号:
问题描述:
我想安装opencv并使用它与xCode在C++中使用应用程序。 我使用macports安装它,并按照许多教程来做到这一点。我在xcode中也做了链接,但是有些功能不起作用。它给像未定义的符号的误差为架构x86_64的:OpenCV与xcode错误:架构x86_64的未定义符号:
cv::resize(cv::_InputArray const&, cv::_OutputArray const&, cv::Size_<int>, double, double, int)",
"cv::floodFill(cv::_OutputArray const&, cv::Point_<int>, cv::Scalar_<double>, cv::Rect_<int>*, cv::Scalar_<double>, cv::Scalar_<double>, int)
如果我切换构建拱到32位,它提供相同的错误更多的功能。
有什么想法吗?我尝试使用opencv删除macports并使用32位构建的自制软件安装它,但是自制软件无法安装它以发生未知错误。库不是64位兼容?
答
我通过我最喜欢的方式安装在我的Mac 2.3.0 OpenCV的,这是下载源代码并进行编译:
tar -xzvf OpenCV-2.3.0.tar.bz2
cd OpenCV-2.3.0
mkdir build
cd build
cmake ../
-- Extracting svn version, please wait...
-- SVNVERSION:
-- Detected version of GNU GCC: 42 (402)
-- checking for module 'libdc1394-2'
-- package 'libdc1394-2' not found
-- checking for module 'libdc1394'
-- package 'libdc1394' not found
-- Found ZLIB: /usr/lib/libz.dylib (found version "1.2.3")
-- Found PythonInterp: /usr/bin/python2.6 (found version "2.6.1")
-- Use NumPy headers from: /System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python/numpy/core/include
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named sphinx
-- CUDA detected: 4.0
-- CUDA NVCC target flags: -gencode;arch=compute_11,code=sm_11;-gencode;arch=compute_12,code=sm_12;-gencode;arch=compute_13,code=sm_13;-gencode;arch=compute_20,code=sm_20;-gencode;arch=compute_20,code=sm_21;-gencode;arch=compute_20,code=compute_20
-- Parsing 'cvconfig.h.cmake'
--
-- General configuration for opencv 2.3.0 =====================================
--
-- Built as dynamic libs?: ON
-- Compiler:
-- C++ flags (Release): -m32 -Wall -pthread -march=i386 -O3 -DNDEBUG -fomit-frame-pointer -ffast-math -msse -msse2 -DNDEBUG
-- C++ flags (Debug): -m32 -Wall -pthread -march=i386 -g -O0 -DDEBUG -D_DEBUG -ggdb3
-- Linker flags (Release):
-- Linker flags (Debug):
--
-- GUI:
-- Cocoa: YES
--
-- Media I/O:
-- ZLib: TRUE
-- JPEG: TRUE
-- PNG: TRUE
-- TIFF: TRUE
-- JPEG 2000: TRUE
-- OpenEXR: NO
-- OpenNI: FALSE
--
-- Video I/O: QTKit
--
-- Interfaces:
-- Python: ON
-- Python interpreter: /usr/bin/python2.6
-- Python numpy: YES
-- Use IPP: NO
-- Use TBB: NO
-- Use ThreadingFramework: NO
-- Use Cuda: YES
-- Use Eigen: NO
--
-- Documentation:
-- Build Documentation: NO
--
-- Install path: /usr/local
--
-- cvconfig.h is in: /Users/karlphillip/installers/OpenCV-2.3.0/build
-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/karlphillip/installers/OpenCV-2.3.0/build
然后:
make
sudo make install
它就在那里:
$ pkg-config --cflags --libs opencv
-I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann
注意:如果需要安装任何依赖关系,使用酿造!
而且所有的OpenCV库是x86_64的:
$ file /usr/local/lib/libopencv_highgui.dylib
/usr/local/lib/libopencv_highgui.dylib: Mach-O 64-bit dynamically linked shared library x86_64
$ file /usr/local/lib/libopencv_imgproc.dylib
/usr/local/lib/libopencv_imgproc.dylib: Mach-O 64-bit dynamically linked shared library x86_64
我建议你删除当前OpenCV的安装,并确保没有任何留在您的系统下载并从头开始编译之前。
@JesseB要解决您看到的pkg-config错误,请阅读[本文](http://opencv.willowgarage.com/wiki/CompileOpenCVUsingLinux)。无论如何,此时您应该尝试手动编译任何OpenCV应用程序(在cmd行上),而不使用XCode。如果问题出现在XCode中,或者它是已安装的库,这将帮助您隔离。 – karlphillip 2011-12-14 18:44:27