我在尝试从OpenCV 2.3官方文档中编译this tutorial中的程序时遇到问题。我已经创建了CMakeList.txt,就像链接中所说的那样。嗯,它不起作用。
经过一段时间搜索Google并尝试修复它之后,我添加了正确的lib并将文件夹添加到OpenCVConfig.make(在/ opt / local / share / opencv这里)。好吧,这是我尝试制作时的输出:
$ cmake .
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/carlosagarie/dropbox/code/c++/opencv
$ make
Linking CXX executable teste
Undefined symbols for architecture x86_64:
"cv::_InputArray::_InputArray(cv::Mat const&)", referenced from:
_main in teste.cc.o
"cv::imshow(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)", referenced from:
_main in teste.cc.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[2]: *** [teste] Error 1
make[1]: *** [CMakeFiles/teste.dir/all] Error 2
make: *** [all] Error 2
试图找出为什么它说 ld:找不到架构x86_64的符号,我查看了我的库文件夹(/ opt / local / lib)并使用了文件命令:< / p>
libopencv_calib3d.2.2.0.dylib: Mach-O 64-bit dynamically linked shared library x86_64
所有其他lib都一样。所以,我认为这对他们来说不是问题。但是,为什么不工作呢?我真的不知道该怎么做。
代码与前面介绍的教程相同。我的CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8)
project( teste )
find_package( OpenCV REQUIRED )
add_executable( teste teste )
target_link_libraries( teste ${OpenCV_LIBS} )
提前致谢!
答案 0 :(得分:1)
我注意到您正在关注2.3.x指南,但链接错误是指2.2.0。你使用的是哪个版本?
您是否尝试过手动编译?
有这样的事情:
假设OPENCV_ROOT
设置为您的安装位置(例如/ opt / local)
g++ -I$OPENCV_ROOT/include -L$OPENCV_ROOT/lib -lopencv_core2.2.0 -lopencv_calib3d2.2.0 -c test.cpp
如果这不起作用,您是否尝试以root身份运行ldconfig
?是否在/etc/ld.so.conf
中设置了opencv库的安装位置(如果没有,您需要在ldconfig
之前执行此操作第一次才会执行任何有用的操作)?
编辑您回答这些问题的更新。而且,我会尽力帮助你。
编辑:
您也可以尝试将此添加到〜/ .profile并查看它修复它:
export DYLD_FALLBACK_LIBRARY_PATH=/opt/local/lib
您是否尝试过使用XCode从第2节开始执行此guide?