繁体   English   中英

错误:“向量”未命名类型/错误:“ <”标记之前的预期“,”或“…” /错误:未声明“向量”

[英]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)'

或类似的内容)。

我放在代码顶部的包括:

  • 的iostream
  • stdio.h中
  • opencv2 / opencv.hpp,opencv2 / highgui / highgui_c.h,opencv2 / imgproc / imgproc_c.h,opencv2 / gpu / gpu.hpp,opencv2 / core / core.hpp
  • 向量
  • 文件math.h
  • CMATH
  • 名单
  • fstream的
  • 了iomanip

+

使用名称空间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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM