3

我已将包管理中的 OpenCV C 库安装到我的 Kubuntu 9.10 中。我编写了一个使用这些库的小型图像修改程序,但我无法编译它,因为每次我尝试编译时都会收到错误消息,即无法找到 OpenCV 库中的函数。

这些头文件在文件夹中,/usr/include/opencv/但编译器仍然说找不到函数。

我试图通过基本的方式将它们包括在内

#include <highgui.h>
#include <cv.h>

netbeans 中的命令(并且我已将 netbeans 设置为从该特定目录搜索头文件),并且还尝试将它们包含在完整路径中。

#include </usr/include/opencv/highgui.h>
#include </usr/include/opencv/cv.h>

此外,我尝试在控制台中编译我的源文件(包含完整路径),但我再次收到相同的错误消息,即无法找到这些库中的函数。

编辑:

我得到的错误信息是

undefined reference to 'function_name'

对于我尝试从该 opencv 库中使用的每个函数,我都会收到该错误。

知道如何解决这个问题吗?


编辑二:

如果其他人正在使用 netbeans 6.7.1 并遇到同样的问题,这是从另一个网站粘贴的解决方案副本:

在这里,我假设您已经手动或通过包管理成功安装了 opencv 库。

  1. 打开 Netbeans,然后执行以下操作:选择工具 -> 选项 -> C/C++ -> 代码帮助 -> 添加包含目录(对我来说,/usr/local/include/opencv)
  2. 创建新项目,然后:右键单击项目名称 -> 属性 -> 构建 -> C/C++ 编译器 -> 包含目录 包含目录:/usr/local/include/opencv
  3. 右键单击项目名称 -> 属性 -> 构建 -> 链接器 -> 包含目录:/usr/local/include/opencv 附加选项:-I/usr/local/include/opencv -L/usr/local/lib -lcxcore -lcv -lhighgui -lcvaux -lml

然后编写程序并编译!!

4

2 回答 2

2

“未定义的引用”是链接器错误。您忘记将您的应用程序与 OpenCV 库链接起来。确保链接 cv 和 highgui (-lcv -lhighgui) 或使用 Tobu 提供的 pkg-config 调用。我还要求提供更详细的错误消息。

于 2010-01-24T22:07:21.903 回答
0

OpenCV 使用pkg-config, 在 unix 上定位库和头文件的标准方法。您可以运行(未经测试):

make CFLAGS="$(pkg-config --cflags --libs opencv)" your-program
于 2010-01-24T21:20:18.183 回答