[英]error: 'vector' does not name a type / error: expected ',' or '…' before '<' token / error: 'vector' has not been declared
我在Ubuntu 15.04上使用Qt Creator。 我只是使用文档网站(此处为https://help.ubuntu.com/community/OpenCV )上提供的脚本安装了OpenCV 3.0。 编译我的代码时,出现一些错误(运行脚本之前不存在):
/usr/include/opencv2/gpu/gpu.hpp:432:错误:“向量”未命名为CV_EXPORTS类型void merge(const vector&src,GpuMat&dst,Stream&stream = Stream :: Null());
/usr/include/opencv2/gpu/gpu.hpp:432:错误:在'<'标记[..]之前应为','或'...'
/usr/include/opencv2/gpu/gpu.hpp:438:错误:尚未声明'vector'[..]
除了第一个错误,所有错误均列在'gpu.hpp'中:
/[..]/main.cpp:6:在../[..]/main.cpp:6:0包含的文件中:
指的是我将opencv2 / gpu / gpu.hpp包括在内的那一行。
我搜索了很多Stackoverflow,并在包含之前移动了“ using namespace std”,但这只是改变了错误类型(它们全部转向
错误:未定义引用`cv :: Mat :: zeros(int,int,int)'
或类似的内容)。
我放在代码顶部的包括:
+
使用名称空间std;
使用命名空间cv;
我的.pro项目文件是:
QT + =核心GUI
大于(QT_MAJOR_VERSION,4):QT + =小部件
目标= FinalMultimedia
模板=应用
LIBS + = -lopencv_core
LIBS + = -lopencv_imgproc
LIBS + = -lopencv_highgui
来源+ = main.cpp \\
运行Makefile(make VERBOSE = 1),我得到:
g ++ -c -m64-管道-g-墙-W -D_REENTRANT -fPIE -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I ../ try -I。 -isystem / usr / include / x86_64-linux-gnu / qt5 -isystem / usr / include / x86_64-linux-gnu / qt5 / QtWidgets -isystem / usr / include / x86_64-linux-gnu / qt5 / QtGui -isystem / usr / include / x86_64-linux-gnu / qt5 / QtCore -I。 -I / usr / lib / x86_64-linux-gnu / qt5 / mkspecs / linux-g ++-64 -o main.o ../try/main.cpp
opencv库根本不出现(不知道为什么)。 我正在使用刚刚运行更新/升级的gcc / g ++,所以我想它是5.1.1。 我是一个完整的Linux初学者,所以我想弄清楚。 有什么帮助吗? 非常感谢你。
更新:
我试图用相同的代码创建一个新的Eclipse项目。 我设置了正确的include /库(前一段时间在ecplipse中使用过opencv / c ++)。 我犯了同样的错误。 WTF
移动名称空间行确实解决了编译问题。 未定义的引用是链接问题。 恭喜! 那是进步。
现在,您只需确定哪个opencv lib具有该符号,并确认您的搜索路径是否在那里(它们可能没有)。 您可以使用readelf
来查看任何特定库中的符号。 您丢失的符号可能应该在opencv_core中,但是我不知道。 您必须确认。 nm
也可能对您有帮助。 man
来看看他们的工作方式-两者都很容易。
您还可以跟踪Qt创建的make文件,并在命令行中使用它。 添加VERBOSE = 1可以查看每个需要的库,以及为库搜索拼出的每个路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.