Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV构建G++;符号错误/DSO错误_C++_Opencv_Raspbian_Opencv3.0_Raspberry Pi3 - Fatal编程技术网

C++ OpenCV构建G++;符号错误/DSO错误

C++ OpenCV构建G++;符号错误/DSO错误,c++,opencv,raspbian,opencv3.0,raspberry-pi3,C++,Opencv,Raspbian,Opencv3.0,Raspberry Pi3,我正在开发一款基于Rpi的自动驾驶汽车,我使用OpenCV对pi摄像头进行图像处理,以便跟踪预先设计的轨迹。我目前正试图让这个工作(一个基本的视频流选项),看看如何让它工作之前,我发展成NN的图像记录 我的代码如下(由于opencv错误,它拒绝构建): -l标志需要跟随使用它们的源文件或对象(.o)文件 链接器就是这样工作的:它从命令行的左到右处理.cpp/.o文件,直到在.cpp/.o文件中看到它们被引用,才知道需要从库中获取什么 因此,请更改链接器命令: g++ -Wall -I/usr/l

我正在开发一款基于Rpi的自动驾驶汽车,我使用OpenCV对pi摄像头进行图像处理,以便跟踪预先设计的轨迹。我目前正试图让这个工作(一个基本的视频流选项),看看如何让它工作之前,我发展成NN的图像记录

我的代码如下(由于opencv错误,它拒绝构建):

-l
标志需要跟随使用它们的源文件或对象(
.o
)文件

链接器就是这样工作的:它从命令行的左到右处理
.cpp/.o
文件,直到在
.cpp/.o
文件中看到它们被引用,才知道需要从库中获取什么

因此,请更改链接器命令:

g++ -Wall -I/usr/local/include -lopencv_core -lwiringPi -lpigpio -lopencv_imgcodecs -lopencv_highgui -lopencv_videoio -lopencv_imgproc -o "SdCar" "SdCar.cpp"


我遇到了同样的问题,但是我用
pkg-config-opencv--cflags--libs
解决了这个问题

当我使用上一个命令编译时,输出如下:

qsp@ubuntu:~/Documents/caffeProject/assign3$ g++ -o "test_mnist"
"test_mnist.cpp" -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs
-lopencv_imgproc -lstdc++ -lopencv_core /usr/bin/ld: warning: libopencv_core.so.3.1, needed by //usr/local/lib/libopencv_dnn.so, may
conflict with libopencv_core.so.2.4 /usr/bin/ld: /tmp/ccovch2b.o:
     undefined reference to symbol '_ZN2cv6String10deallocateEv'
     //usr/local/lib/libopencv_core.so.3.1: error adding symbols: DSO
     missing from command line collect2: error: ld returned 1 exit status

虽然问题解决了,我还是不知道为什么。有人能解释一下吗?

值得注意的是,忽略“系统菜单”部分,只阅读主要部分,这是opencv摄像头访问的尝试。您是否尝试过使用
pkg config
?@polarysekt我尝试过,但无法使用语法,将在下面的代码链接v4l时再次尝试。。will Research我的评论在这里丢失了,因为我想让类实例化术语完全正确。您希望调用类实例上的方法,而不是类本身。在您的情况下,
cap
。所以要么
videocap;上限开放(0),或仅
视频捕获上限(0)
作为重载构造函数的一个版本,它采用
int index
并一步打开
cv
是名称空间,不需要指定,因为您已经有了一个使用名称空间cv
。如果不是那样的话,你就必须做
cv::VideoCapture(0)。。。不管怎样,我认为您不想将constructor作为静态方法调用。看起来您安装了两个版本的opencv。尝试使用
$(pkgconfig opencv--libs)
而不是
-lopencv\u core-这是因为您有两个OpenCv实例,分别为2.4和3.1。当然,您的程序只希望使用1,而不是同时使用2.4,因此输出“可能与libopencv_core.so.2.4冲突”。事实上,我注意到了这个警告。我手动安装了opencv3.1,但我不知道在哪里可以找到2.4版本。我已经尝试了
whereis opencv
。你能告诉我怎么做吗?
g++ -Wall -I/usr/local/include -lopencv_core -lwiringPi -lpigpio -lopencv_imgcodecs -lopencv_highgui -lopencv_videoio -lopencv_imgproc -o "SdCar" "SdCar.cpp"
g++ -Wall -I/usr/local/include  -o "SdCar" "SdCar.cpp" -lopencv_core -lwiringPi -lpigpio -lopencv_imgcodecs -lopencv_highgui -lopencv_videoio -lopencv_imgproc
qsp@ubuntu:~/Documents/caffeProject/assign3$ g++ -o "test_mnist"
"test_mnist.cpp" -lopencv_dnn -lopencv_highgui -lopencv_imgcodecs
-lopencv_imgproc -lstdc++ -lopencv_core /usr/bin/ld: warning: libopencv_core.so.3.1, needed by //usr/local/lib/libopencv_dnn.so, may
conflict with libopencv_core.so.2.4 /usr/bin/ld: /tmp/ccovch2b.o:
     undefined reference to symbol '_ZN2cv6String10deallocateEv'
     //usr/local/lib/libopencv_core.so.3.1: error adding symbols: DSO
     missing from command line collect2: error: ld returned 1 exit status