我已经安装了 OpenCV 4.0 ,并在Makefile中指定了opencv额外模块的路径,但是当我尝试运行 GoLang 项目时,该项目使用的是在 C++ 中创建的OpenCV函数(我已经包装了 C++ GoLang 中包含的 C 库中,我得到“ undefined reference 错误”。

问题是,当我将自己放置在/usr/local/include上时,存在一个optflow.hpp文件,其中包含我需要的函数声明,但是我假设在/usr/local/src文件夹中应该放置源文件,该文件夹是空的。或根本没有源文件,并且所有文件都已内置到/usr/local/lib中,在这种情况下,我仍然不确定为什么会收到“undefined reference” 错误消息。

构建的optflow.hpp和libopencv_optflow库是否可能不兼容?如果是这样,我该如何解决?

有什么建议么?

最佳答案

最好使用Cmake来配置构建和链接的参数。由于-std = c++ 11,可能会出现这种问题,但是Cmake为make文件准备了非常复杂的设置,典型的结果是像您这样的问题,并且找不到更多内容。我很难为直接从Visual Studio visual studio建立项目的opencv 4建立制作文件

另一个想法是链接库。您可能会错过opencv lib使用的动态依赖项。 Cmake为您解决了此配置。

g++“-W”开关“-W”不推荐使用的声明“-W”空体“-W”转换“-W”返回类型“-W”括号“-W”无指针符号“- W“无格式” -W“未初始化” -W“不可访问代码” -W“未使用函数” -W“未使用值” -W“未使用变量” -std = c++ 11 -w -fno -strict-aliasing -I“/ usr / local / include / opencv4 / opnecv2” -g0“g++” -O2“3600000” -fno-threadsafe-statics -D“NDEBUG” -W“switch” -W“不推荐使用-声明“-W”空体“-W”转换“-W”返回类型“-W”括号“-W”无格式“-W”未初始化“-W”无法访问代码“-W”未使用-function“-W” unused-value“-W” unused-variable“-fno-rtti -fno-omit-frame-pointer -std = c11 -fno-exceptions” 1“-o

和链接器参数一样

Linker opencv 4 configuration part is more tricky

库依赖项-l“opencv_core” -l“opencv_imgcodecs” -l“opencv_imgproc” -l“opencv_video” -l“opencv_videoio” -l“pthread” -l“jpeg” -l“gcc_s” -l“stdc++” -l“tbb“-l” rt“-l” dl“-l” m“-l” z“-l” png16“-l” c“

您只是在不使用-l的情况下将以下值填充到“库依赖项”选项中
opencv_core
opencv_imgcodecs
opencv_imgproc
opencv_video
opencv_videoio
pthread
jpeg
gcc_s
标准++
待定
rt
dl

ž
png16
C

10-07 12:03