C++ OpenCV构建G++;符号错误/DSO错误
我正在开发一款基于Rpi的自动驾驶汽车,我使用OpenCV对pi摄像头进行图像处理,以便跟踪预先设计的轨迹。我目前正试图让这个工作(一个基本的视频流选项),看看如何让它工作之前,我发展成NN的图像记录 我的代码如下(由于opencv错误,它拒绝构建):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
-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