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的安装,并确保没有任何留在您的系统下载并从头开始编译之前。

+0

@JesseB要解决您看到的pkg-config错误,请阅读[本文](http://opencv.willowgarage.com/wiki/CompileOpenCVUsingLinux)。无论如何,此时您应该尝试手动编译任何OpenCV应用程序(在cmd行上),而不使用XCode。如果问题出现在XCode中,或者它是已安装的库,这将帮助您隔离。 – karlphillip 2011-12-14 18:44:27