Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.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++ 错误:';向量';未命名类型/错误:应为'';或'';在'之前<';令牌/错误:';向量';尚未申报_C++_Qt_Opencv_Ubuntu_Vector - Fatal编程技术网

C++ 错误:';向量';未命名类型/错误:应为'';或'';在'之前<';令牌/错误:';向量';尚未申报

C++ 错误:';向量';未命名类型/错误:应为'';或'';在'之前<';令牌/错误:';向量';尚未申报,c++,qt,opencv,ubuntu,vector,C++,Qt,Opencv,Ubuntu,Vector,我正在Ubuntu 15.04上使用Qt Creator。我刚刚使用文档网站(此处:)上提供的脚本安装了OpenCV 3.0。编译代码时,我遇到一些错误(在运行脚本之前不存在): /usr/include/opencv2/gpu/gpu.hpp:432:错误:“vector”未命名类型 CV_导出无效合并(const vector&src、GpuMat&dst、Stream&Stream=Stream::Null()) /usr/include/opencv2/gpu/gpu.hpp:432:e

我正在Ubuntu 15.04上使用Qt Creator。我刚刚使用文档网站(此处:)上提供的脚本安装了OpenCV 3.0。编译代码时,我遇到一些错误(在运行脚本之前不存在):

/usr/include/opencv2/gpu/gpu.hpp:432:错误:“vector”未命名类型 CV_导出无效合并(const vector&src、GpuMat&dst、Stream&Stream=Stream::Null())


/usr/include/opencv2/gpu/gpu.hpp:432:error:expected:“移动名称空间行之前的”“或”“…”确实解决了编译问题。未定义的引用是一个链接问题。恭喜!这就是进步

现在,您只需确定哪个opencv库具有该符号,并确认您的搜索路径正在查找(它们可能没有)。您可以使用
readelf
查看任何特定库中的符号。你丢失的符号可能应该在opencv_内核中,但我不知道。你得确认一下<代码>nm也可能对您有所帮助。使用
man
查看它们是如何工作的——两者都很简单


您还可以跟踪Qt创建的make文件,并从命令行使用它。添加VERBOSE=1以查看请求的每个库,以及为库搜索指定的每个路径。

在.pro中发布a,最后7行以“\”结尾。尝试使用“/”作为路径,使用“\”作为转义字符。你说你的路径是Linux,但路径看起来像Windows。可能在LIBS变量中链接.so,使用
pkg config--LIBS opencv
查找.so。还有m.s.所说的。我是一个完全的初学者,所以我需要问一下‘link the.so in the LIBS variable’是什么意思。运行我得到的其他命令:-L/usr/local/lib-lopencv_shape-lopencv_缝合-lopencv_objdetect-lopencv_superres-lopencv_videostab-lopencv_calib3d-lopencv_feature2d-lopencv_highgui-lopencv-lopencv视频-lopencv_imgcodecs-lopencv视频-lopencv_照片-lopencv_图片-lopencv-ml-lopencv-imgproc-lopencv-flancu-hal-lopencu标签包括ubuntu,但你的LIB路径是Windows格式的。哪一个是正确的?我刚刚更改了.pro文件,只留下了:>LIBS+=-lopencv_core>LIBS+=-lopencv_imgproc>LIBS+=-lopencv_highgui(当然还有QT、目标、模板、源代码)。仍然存在错误,并且VERBOSE=1的输出仍然没有更改。我正在使用Ubuntu 15.04。对不起,我不知道怎么做。我改变了我的.pro行:>LIBS+=-lopencv_core>LIBS+=-lopencv_imgproc>LIBS+=-lopencv_highgui>LIBS+=-lopencv_feature2d>LIBS+=-lopencv_calib3d我可能需要添加另一行吗?我用一些细节更新了答案。您在项目目录中找到名为
Makefile
的文件了吗?我不会试图筛选内容。只需将
cd
发送到该目录,然后执行
make VERBOSE=1
谢谢,但我还是不明白。运行Makefile(makeverbose=1)时,我得到的错误与在Qt中得到的错误相同。我注意到删除.pro文件中的所有内容都不会改变。只是main.cpp中的“include”行负责opencv库吗?是的,您应该会得到相同的错误。目的是检查g++命令行。这个冗长的输出值得添加到您的问题中。g++-c-m64-pipe-g-Wall-W-D_可重入-fPIE-DQT_WIDGETS_LIB-DQT_GUI_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/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这就是我得到的