2011-08-08 130 views
17

我正在使用Linux的Eclipse來開發C++應用程序,我得到這個編輯註釋錯誤從下面的代碼行「符號‘矢量’無法解析」錯誤,符號「向量」無法解析

std::vector<unsigned char> buffer; 

我覺得某些庫缺失或者路徑沒有設置。我明確下載了STL,但沒用。我需要在我的linux上重新安裝GCC嗎?

+1

我懷疑問題是你'明確地下載了STL',這不應該是必需的,也許你在這一點上犯了一些錯誤。 – john

+2

如果路徑沒有設置,你應該在'#include '上得到一個錯誤。輸出中的* first *錯誤是什麼? – molbdnilo

+0

您是否嘗試在eclipse外部使用gcc或cc來鏈接包含向量的Hello World C++文件?我會給那一槍。 – Sid

回答

2

您需要在程序中包含STL向量定義。把:

#include <vector> 

在你的文件的頂部,它應該工作。

+0

我已經在頂部包含了這個,但沒有用處 –

+0

這很奇怪..你可以發佈你的命令行嗎? – StevieG

+2

Err ..如果你打算downvote一個職位,至少有正派來解釋爲什麼... – StevieG

1
#include<vector> 

應該包含在頂部。

+0

這也不起作用 –

1
#include <vector> 

此外,性病::向量是模板類型,所以你必須使用像

std::vector<char> buffer; 
1

我覺得有些庫丟失或路徑沒有設置。

是的,這聽起來像一個鏈接器錯誤。 Linkers處理符號。

我明確下載了STL,但沒用。

希望你的意思是libstdC++,GNU的C++標準庫實現,你可能不應該這樣做。您的工具鏈附帶了正確的stdlib實現。

我需要在我的linux上重新安裝GCC嗎?

大概是明智的。讓這個安裝處理標準庫。另外,關於你正在玩你的編譯命令行的機會,請記住調用g++而不是gcc; g++自動鏈接在C++運行時和stdlib實現中,而gcc是爲C設計的。

+0

@UmairZaman:恩? –

18

在Eclipse中,右鍵單擊項目名稱...選擇索引...重建。

+0

僅供參考 - 與刷新不同(我認爲是)。 – Cookster

+0

加入#include 爲我工作 –

4

我有同樣的問題。我相信問題來自於如何更新std :: autocompletion。 Eclipse應該從Path和Symbols中得到這個,但它可能會有問題。升級gcc(因此,g ++)後,我必須清理所有Eclipse設置,因爲你在Linux中,它位於你的home文件夾〜/ .eclipse /下。

因此,

1)清洗〜/ .eclipse /後重新開始的Eclipse。

2)檢查路徑和符號(右鍵單擊項目>常規>路徑和符號)包括所有升級後的gcc和C++包含目錄(向量應該在。/ gcc/version/include/C++/version /)

3)重建索引。

4)創建一個* .cpp文件,其中包含錯誤顯示的* .h。這將迫使Eclipse回溯* .h的依賴關係。

5)根據需要重建索引和/或重新啓動幾次,現在我可以在std :: autocompletion的末尾看到向量。

enter image description here(見圖片)

希望它能幫助!

+3

我認爲這個答案是正確的。這個問題與這個其他解決的帖子有關:http://stackoverflow.com/questions/10803685/eclipse-cdt-symbol-cout-could-not-be-resolved。我用類似於@wgodoy解釋的程序解決了這個問題(使用提到的帖子)。 – jespestana

0

創建一個*.cpp文件,其中包含出現錯誤的*.h。這將迫使Eclipse回溯*.h的依賴關係。
爲我工作...

0

add #include < vector> and using namespace性病;解決了我的問題

0

我知道這個問題已經解決了,但是它出現了,並且Google出現了,並且使用谷歌搜索將此頁作爲最高結果。

使用Eclipse的霓虹燈Linux的Quick Fix解決它:

  • 右鍵單擊在編輯器 「載體」
  • 然後 「速戰速決」
0

很可能你有一些系統特定的包含目錄mi在您的設置中進行調用,這使得索引器無法正確分析iostream,從而導致錯誤。在項目的上下文菜單中選擇Index -> Search For Unresolved Includes將爲您提供可以在/usr/include中搜索的未解析包含列表,並向項目屬性中的C++包含路徑和符號添加目錄。

在我的系統上,我不得不添加/usr/include/c++/4.6/x86_64-linux-gnu來解決bits/c++config.h以及更多的目錄。

不要忘記在添加包含目錄後重建索引(索引 - >重建)。

0

顯然矢量屬於MinGW透視圖的C++標準模板庫。所以除了

#include <vector> 

添加

using namespace std; 

頭文件包含之後。