Opencv 未定义的引用;cv::optflow::createOptFlow_DualTVL1(); 我已经成功安装了 GOCV包,我尝试运行C++代码,我在我的GO项目中用C库包了它。但是当我尝试调用cv::optflow::createOptFlow\u DualTVL1()方法时,似乎出现了问题。我得到了未定义的引用错误。我不知道为什么,因为在optflow.hpp文件中有一个方法叫做createOptFlow\u DualTVL1()
这是我的Opencv 未定义的引用;cv::optflow::createOptFlow_DualTVL1(); 我已经成功安装了 GOCV包,我尝试运行C++代码,我在我的GO项目中用C库包了它。但是当我尝试调用cv::optflow::createOptFlow\u DualTVL1()方法时,似乎出现了问题。我得到了未定义的引用错误。我不知道为什么,因为在optflow.hpp文件中有一个方法叫做createOptFlow\u DualTVL1(),opencv,go,Opencv,Go,这是我的main.go文件: package main /* #cgo LDFLAGS: -L/usr/local/lib -lopencv_core -lopencv_video -lopencv_videoio -lopencv_highgui -lopencv_tracking -lopencv_optflow #include "dense_flow.h" */ import ( "C" "gocv.io/x/gocv" ) func main(){ }
main.go
文件:
package main
/*
#cgo LDFLAGS: -L/usr/local/lib -lopencv_core -lopencv_video -lopencv_videoio -lopencv_highgui -lopencv_tracking -lopencv_optflow
#include "dense_flow.h"
*/
import (
"C"
"gocv.io/x/gocv"
)
func main(){
}
注意:密集流.h
是我声明的calculate4vl1()
函数,该函数调用createOptFlow\u DualTVL1()
内部密集流.cpp
文件
操作系统和版本:Ubuntu 18.04
使用的OpenCV版本:4.0.0
使用的GoCV版本:0.18
Go版本:1.12此光流从contrib模块导入。
您需要高级导入():“gocv.io/x/gocv/contrib”实际上,我尝试使用的算法不是该模块的一部分。这就是为什么我在C中包装C++代码的原因。我试图在GO中使用。未定义的引用错误表示,链接器需要一个带有实现的对象:*.O或*.Obj.*.a或*.LIB。此函数的实现在此处:。您是否需要链接opencv_optflow库。如果我的/usr/local/include目录中有所有内容,我不明白它怎么会找不到?因为我运行了一个使用opencv_视频的测试程序,它可以正常工作。不知道现在发生了什么。