簡體   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