未定义的符号,cvSmooth在mac上的opencv2.3.1中

时间:2012-02-09 22:11:40

标签: opencv

我是Opencv的初学者。最近我遇到了关于cvSmooth的问题。当我尝试使用Xcode编译它时,编译器给了我一个错误说, 未定义的符号:   “_cvSmooth”,引自:       _main在main.o中 ld:找不到符号 collect2:ld返回1退出状态

有谁知道导致这个问题的原因是什么?谢谢!

3 个答案:

答案 0 :(得分:2)

OpenCV编译了许多库。如果你像我一样开始使用OpenCV教程(我正在使用O'Reilly的书),你添加了libopencv_core.dyliblibopencv_highgui.dylib,直到使用cvSmooth函数。

链接器错误(未定义的符号)是“您没有链接到所有必需的库,因此我找不到您要求的例程”的代码。使用nm命令可以很容易地找到它们,有时您可以通过提供您认为可能存在的库来帮助搜索:

joe@macmini:/usr/local/lib [master]
$ nm libopencv_imgproc*|grep cvSmooth
0000000000132a60 T _cvSmooth
0000000000132a60 T _cvSmooth
0000000000132a60 T _cvSmooth

libopencv_imgproc.dylib添加到您的Xcode项目中,您应该参加比赛。

PS:_cvSmooth由于与基础库的软链接而显示3次:

$ ls -l libopencv_img*
-rwxr-xr-x  1 root  admin  2063132 Feb 16 17:48 libopencv_imgproc.2.4.8.dylib*
lrwxr-xr-x  1 root  admin       29 Feb 16 17:48 libopencv_imgproc.2.4.dylib@ -> libopencv_imgproc.2.4.8.dylib
lrwxr-xr-x  1 root  admin       27 Feb 16 17:48 libopencv_imgproc.dylib@ -> libopencv_imgproc.2.4.dylib

答案 1 :(得分:0)

当您未将OpenCV库链接到已编译的程序时,会发生这种情况。尝试在OpenCV Wiki的Xcode项目中使用OpenCV的说明,看看是否有帮助。

答案 2 :(得分:0)

前几天我得到了完全相同的问题。但是,它现在已经修好了。

基本上,你需要检查三件事。 1.您是否正确设置了搜索路径? 在项目“building Settings”标签上,您需要将Header Search Path和Library Search Path设置为header和lib的目录。我使用MacPort安装了opencv 2.4,因此路径为/ opt / local / include&的/ opt /本地/ lib中

  1. 您是否手动添加了库? 在建设阶段 - >将二进制文件链接到库标记,您需要将需要使用的opencv dylib添加到此位置。

  2. 您是否选择了GCC编译器? Xcode中的默认编译器是Apple LLVM编译器,它使用c ++ 11标准。由于opencv 2.4与此标准不兼容,因此需要将编译器切换到GCC。您可以在Building Setting标记

  3. 下更改它

    希望我的经验可以帮助您解决问题;)