2011-12-13 96 views
3

我想安裝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位兼容?

回答

2

我通過我最喜歡的方式安裝在我的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

相關問題