在Xcode的64位mac上编译opencv 2.4
我有一个opencv项目,我在一个x86_64体系结构的mac上的parellels虚拟机上开发了ubuntu 12.04。我认为有很多屏幕切换性能问题是由于虚拟机造成的,其中Linux视频模式在几秒钟内翻转,而相机访问由opencv应用程序完成。我决定将该项目移到计算机的mac端的Xcode上,以继续opencv的开发。但是,我并不熟悉xcode,并且无法使项目在那里正确构建。在Xcode的64位mac上编译opencv 2.4
我安装了xcode。 我下载并解压mac上的最新版本的opencv,并运行:〜/ src/opencv/build/cmake-gui -G Xcode ..按照willowgarage和各种其他位置的说明。 这似乎工作正常(但是我想知道如果我错过了这里的架构设置,虽然它是Xcode中的64位英特尔)。 然后,我使用linux项目的源文件设置了xcode项目,并将include目录更改为使用/ opt/local/include/...而不是/ usr/local/include/... 我将xcode切换为在项目 的构建设置中使用LLVM GCC编译器,然后将C++的Apple LLVM对话框设置为GNU ++ 11(这可能与上面的行不一致)
我没有使用makefile (我知道 - 它有它自己的项目文件...)
我也遇到了一个链接器问题,看起来像他们可能会解决这个连接器标志:
-lopencv_video
基于一个类似的贴子在这里:other thread 但是在这种情况下,人们在他们的项目中使用了Makefile。
我已经尝试在xcode构建设置中的“其他链接器标志”下添加此链接器标志,但仍然出现构建错误。
我想我可能在这里有两个问题,一个是用Cmake构建opencv库时的架构设置,另一个是我的项目中链接器标志设置。
目前生成错误列表如下:
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in main.o
"cv::_OutputArray::_OutputArray(cv::Mat&)", referenced from:
_main in main.o
"cv::Mat::deallocate()", referenced from:
cv::Mat::release() in main.o
"cv::Mat::copySize(cv::Mat const&)", referenced from:
cv::Mat::Mat(cv::Mat const&)in main.o
cv::Mat::operator=(cv::Mat const&)in main.o
"cv::Mat::Mat(_IplImage const*, bool)", referenced from:
_main in main.o
"cv::imread(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)", referenced from:
_main in main.o
---SNIP---
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
任何人都可以提供什么就尝试下一些指导?
谢谢, 沃尔特
步骤编译和Mac OS X上的狮子10.7.5通过CMake 2.8.10和xcode的4.6.1 EDIT运行C++的OpenCV 2.4.4:用OpenCV的2.4.5测试成功在Mac OS X山狮10.8.3和Xcode的4.5
有正确的工具
- 下载OpenCV的-UNIX从http://sourceforge.net/projects/opencvlibrary/files/并解压到任意位置 从 http://www.cmake.org/cmake/resources/software.html
- 下载的cmake的.dmg并安装它
- 我假设你有在OS X Lion中,其中包括iOS SDK中6.1
- 去xcode的喜好,所以你必须下载并安装命令行工具G ++的Xcode 4.6等等
使用的cmake编译OpenCV的
- 去提取OpenCV的文件夹
-
创建一个build目录
mkdir build cd build cmake -D WITH_TBB=OFF -D BUILD_NEW_PYTHON_SUPPORT=OFF -D BUILD_FAT_JAVA_LIB=OFF -D BUILD_TBB=OFF -D BUILD_EXAMPLES=ON -D CMAKE_CXX_COMPILER=g++ CMAKE_CC_COMPILER=gcc -D CMAKE_OSX_ARCHITECTURES=x86_64 -D BUILD_opencv_java=OFF -G "Unix Makefiles" .. make -j8 sudo make install
-
从build文件夹,转到斌/并运行其中一项测试
./opencv-test-photo
创建您自己的C++ OpenCV的xcode项目
- 火起来的Xcode并创建一个新的Xcode项目
- 选择命令行工具项目在OS X下
- 类型在架构下打开项目的构建设置
- ,将架构设置为64位intel。还建立有效的体系结构来x86_64上
- 下编译选项,设置编译器为C/C++到默认的编译器
- 下搜索路径,设置标题搜索路径为/ usr /本地/包括
- 也在搜索路径,设置图书馆搜索到/ usr/local/lib的路径
- Apple LLVM编译器4.2 - 语言设置C++标准库到libstd ++(使用OpenCV 2.4.6,Xcode 5,LLVM 5.0和10.8.5,设置语言方言和std库改为“编译器默认值”)
添加编译OpenCV的库项目
- 去旁边的生成阶段选项卡来构建设置你在
- 链接二进制与图书馆内标签中,点击+号,然后选择添加其他
- 撞上了前方斜线/键盘上并输入在/ usr/local/lib目录
- 按下回车键,然后选择要在项目中使用的库
- 确保您始终选择libopencv_core.2.4.4.dylib
- 打带之三,你会看到你的项目
下选择dylibs编写一些代码
- 首先让组织文件,右键点击你的项目计划中的图标,并选择新建组
- 名新组opencv或任何
- 拖动dylibs并将其放入该组
- open main。从任何与OpenCV的来到了抽样检验的CPP
- 复制代码,并在这里贴吧
-
确保所有必需的dylibs添加,例如,如果你复制的opencv_test_stitching.cpp代码到main.cpp中,你需要添加以下库在前面的步骤
- libopencv_core.2.4.4.dylib
- libopencv_highgui.2.4.4.dylib
- libopencv_stitching.2.4.4.dylib
干杯。
谢谢很多...这解决了我的问题..问题是“C++标准库”。默认情况下它是“libC++”。将它改为“libstdC++”已经成功了。再一次感谢Thankyou – tez 2013-04-19 11:55:22
伟大的教程让我比其他人更进一步。这一切都改变了xcode 5和OpenCV 2.4.6.1?我在sudo make install期间遇到了一些错误,但我会尝试自行追踪它们。谢谢! – 2013-10-23 03:03:54
根据此评论(http://stackoverflow.com/questions/14030546/linker-errors-after-upgrading-xcode-to-4-5-2-and-opencv-to-2-4-3/15662948# comment28843244_15662948),是的,有变化。 “使用OpenCV 2.4.6,Xcode 5,LLVM 5.0和10.8.5,我必须将语言方言和标准库(第8步)设置为”编译器默认“,否则我会看到链接器错误(抱怨),或缺少。“ 我更新了答案。希望对你有效。 –
moubarak
2013-10-24 21:49:57