【问题标题】:Undefined symbols, cvSmooth in opencv2.3.1 on macmac上opencv2.3.1中未定义的符号,cvSmooth
【发布时间】:2014-02-17 11:40:20
【问题描述】:

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

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

【问题讨论】:

  • 首先,尝试通过命令行编译您的源代码:g++ demo.cpp -o demo `pkg-config --cflags --libs opencv` 如果您的系统上正确安装了 OpenCV,这应该可以工作。如果编译成功,说明只是环境问题,需要按照@SSteve所说的进行。
  • 因为您刚刚开始使用 opencv,所以可能尽量避免一般已弃用的 c-api(cv* 函数、IplImages 等)他们已经在 5 年前转移到 c++,因此应该你..

标签: opencv


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      1. 您是否手动添加了库? 在 Building Phases --> Link Binary with Library 标签下,需要将需要用到的那些 opencv dylib 添加到这个地方。

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

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

      【讨论】:

        猜你喜欢
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        • 2020-01-04
        • 2015-06-17
        • 2018-08-20
        • 1970-01-01
        • 1970-01-01
        • 2021-12-21
        相关资源
        最近更新 更多