C++ 编译基本openCV程序时出错

C++ 编译基本openCV程序时出错,c++,opencv,pkg-config,C++,Opencv,Pkg Config,我按照下面提到的链接安装了openCV: 现在,当我编译测试程序时,安装进展顺利: 使用以下命令: opencv openCVtest.cpp 它向我抛出以下错误: compiling openCVtest.cpp g++: error: missing argument to ‘-l’ Output file => openCVtest 我查找了我用来编译的脚本(它是给定的) 并且看到了这条特殊的线,用来编译我的C++代码: g++ -ggdb `pkg-config --cfla

我按照下面提到的链接安装了openCV:

现在,当我编译测试程序时,安装进展顺利: 使用以下命令:

opencv openCVtest.cpp
它向我抛出以下错误:

compiling openCVtest.cpp
g++: error: missing argument to ‘-l’
Output file => openCVtest
我查找了我用来编译的脚本(它是给定的) 并且看到了这条特殊的线,用来编译我的C++代码:

g++ -ggdb `pkg-config --cflags opencv` -o `basename $1 .cpp` $1 `pkg-config --libs opencv`;
我知道“-l”要求一些库,但我认为我不应该将代码以外的任何东西传递给这个脚本

PS以下是该行执行内容的详细信息:

hduser@ishan-Notebook-PC:~/Documents/OpenCv$ echo g++ -ggdb `pkg-config --cflags opencv` -o `basename opencvtest.cpp .cpp` opencvtest.cpp `pkg-config --libs opencv`

g++ -ggdb -I/usr/include/opencv -I/usr/include/opencv2 -o opencvtest opencvtest.cpp -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l
你们能帮我弄清楚我到底做错了什么吗? 谢谢

更新

我发现我的opencv.pc文件包含一个额外的“-l”,我删除了该标志,上述错误消失:

opencv.pc文件的内容:

prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version: 2.x.x
Cflags: -I${includedir}/opencv -I${includedir}/opencv2
Libs: -L${libdir} -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -l
请注意最后一行中额外的“-l”

但是,现在我得到了以下错误:

openCVtest.cpp:1:39: fatal error: opencv2/highgui/highgui.hpp: No such file or directory
 #include "opencv2/highgui/highgui.hpp"

似乎
pkg config
在末尾返回了一个额外的
-l
。 您可以在不手动运行命令的情况下尝试运行该命令:

g++ -ggdb -I/usr/include/opencv -I/usr/include/opencv2 -o opencvtest opencvtest.cpp -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy
更新:
对于第二个问题,请尝试使用不带
opencv
opencv2
目录的include路径

因此,与此相反:

Cflags: -I${includedir}/opencv -I${includedir}/opencv2
试试这个:

Cflags: -I${includedir}

hey@Lawrence,它处理了上述错误,但现在抛出了一个新错误:openCVtest.cpp:1:39:致命错误:opencv2/highgui/highgui.hpp:没有这样的文件或目录#包括“opencv2/highgui/highgui.hpp”我查找了/usr/include/opencv2文件夹highgui根本不在那里??这正常吗?安装后我是否应该丢失基本的头文件..这可能与此有关:嘿@Lawrence,那篇文章中的家伙有windows,我想我需要进一步查看。。