[英]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.