libopencv_optflow可能不包含在optflow.hpp中指定的所有函数定义

libopencv_optflow possibly does not contain all the function definitions that are specified inside optflow.hpp

本文关键字:optflow 定义 函数 hpp 包含 libopencv      更新时间:2023-10-16

我已经安装了OpenCV 4.0,并且在Makefile中我已经指定了OpenCV额外模块的路径,但当我尝试运行我的GoLang项目时,该项目使用在C++中创建的OpenCV函数(我已将C++代码封装在GoLang包含的C库中),我会得到"未定义的引用错误">

问题是,当我将自己定位在/usr/local/include时,有一个optflow.hpp文件,其中包含我需要的函数声明,但我的/usr/local/src文件夹是空的,我认为它是源文件的位置。或者根本没有源文件,并且所有源文件都已构建到/usr/local/lib中,在这种情况下,我仍然不确定为什么会收到"未定义引用">错误消息。

是否可能已经构建的optflow.hpp和libopencv_optflow库不兼容?如果是,我该如何修复?

有什么建议吗?

使用Cmake配置构建和链接的参数要好得多。这种问题可能是由于-std=c++11而发生的,但Cmake为您的make文件准备了非常复杂的设置,典型的结果是出现类似您的问题,无法找到imread等。我有很多麻烦,直接从visual studio visual studio 为opencv 4构建项目设置制作文件

另一个想法是关联的libs。您可能会从opencv-lib使用的动态依赖关系中遗漏一些内容。Cmake为您解决了此配置。

g++"-W"switch"-W"没有不推荐使用的声明"-W"空正文"-W"转换"-W"返回类型"-W"圆括号"-W"没有指针符号"-W"无格式"-W未初始化"-W"无法访问的代码"/W"未使用的函数"-W是未使用的值"-W是不使用的变量"-std=c++11-W-fno严格别名-I"/usr/local/include/opcv4/opnecv2"-g0"g++"-O2"3600000"-fno线程安全静态-D"NDEBUG"-W是switch"-W没有不推荐使用的声明"-W"空正文"-W"转换"-W"返回类型"-W"括号"-W"无格式"-W未初始化"-W不可访问的代码"-W没有使用的函数"-W没有未使用的值"-W不使用的变量"-fno rtti-fno省略帧指针-std=c11-fno异常"1"-o r

和链接器参数作为

Linker opencv 4 configuration part is more tricky

库依赖项-l"opencv_core"-l"opencv_imgcodecs"-l"opencv_imgproc"-l"opencv_video"-l"pthread"-l

您只是在没有-l的情况下将以下值填充到库依赖项选项中opencv_coreopencv_imgcodecsopencv_imgprocopencv_videoopencv_videiopthreadjpeggcc_sstdc++tbbrtdlmzpng16c