在Mac OS X Lion中链接OpenCV 2.3程序:在架构x86_64中找不到符号

时间:2011-10-26 22:54:36

标签: opencv cmake x86-64 ld

我在尝试从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} )

提前致谢!

1 个答案:

答案 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