2012-02-18 72 views
81

我設立了CDT Eclipse和寫了一個簡單的hello world C程序:「未解決的包容性」錯誤與Eclipse CDT的C標準庫頭

#include <stdio.h> 

int main(void){ 
    puts("Hello, world."); 
    return 0; 
} 

該方案建立和運行正常,但日食一直顯示這當我將鼠標放在它上面時,表示"Unresolved inclusion: <stdio.h>"的包含語句旁邊的黃色問號。

它不影響程序的運行,但我覺得它很煩人。

有沒有人有任何想法如何刪除它?

+1

你會認爲,Hello World示例會爲你做到這一點,或至少提供一些幫助。如果eclipse不包含編譯器,爲什麼不呢? – 2012-08-03 21:07:04

+0

http://stackoverflow.com/questions/7905025/string-could-not-resolved-error-in-eclipse-for-c – Vanuan 2012-10-22 10:07:39

回答

43

編譯器的Eclipse使用是能夠解決的符號就好了,這樣的代碼將編譯好的。

但代碼完成/預處理Eclipse是用不知道從哪裏stdio.h中存在。

您需要指定stdio.h所在的文件系統路徑。

參見:http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/tasks/cdt_t_proj_paths.htm

+1

感謝您的答覆。但是Ubuntu 11.10的路徑在哪裏? – 2012-02-18 02:23:54

+8

問題解決。它在/ usr/include中。再次感謝。 – 2012-02-18 02:40:12

+0

讓我困惑的一件事是,我不得不將路徑添加到「包含」選項卡,而不是「庫路徑」選項卡。我一直認爲「角架」包括「圖書館」在內。 – aaaidan 2012-07-07 05:24:36

8
  • 選擇文件>>新建項目
  • 在項目嚮導中,選擇C/C++ >> C++項目
  • 在 「項目類型」 部分中,選擇「生成文件項目>>世界,你好C++項目
  • 在「工具鏈」部分中,選擇「李nux GCC

它可以解決問題。 (請原諒我的英語很差)

+1

我做了那些事情,但它仍然不認識頭文件在/ usr/include中。 – 2013-01-27 21:37:00

+0

比添加每一個包括你自己要容易得多。我確實使用了交叉平臺選項,它也運行良好(在Ubuntu上) – panmari 2013-05-03 12:56:49

+0

非常有幫助!偉大的英語。 – zehelvion 2016-03-10 15:42:51

44

我找到這些問題的答案(包括接受的)有些神祕。

對於我來說,我不得不添加其中stdio.h中所在的路徑(如@ardnew說的)。在Eclipse中,打開項目的屬性,展開「C/C++常規」並選擇「路徑和符號」。

確保您已經添加了include DIR您所使用的每種語言。 (在我的情況,我需要只需將其添加到GNU C++)

enter image description here

+0

這是非常接近我需要的!只需要更改路徑中的用戶名。 – Lucas 2013-10-08 08:26:31

+2

在OS X上,您可能需要使用命令'/ usr/bin/xcode-select --install'手動安裝命令行開發人員工具(首先需要安裝Xcode),然後您可以將Eclipse指向'/usr/include /' – RobV 2014-04-15 22:24:55

+1

關於優勝美地。使用Eclipse Juno。除了我給出的路徑有點不同(/ Users/SrinivasanNatarajan/android-ndk/platforms/android-19/arch-arm/usr/include)之外,這種方法對我很有用。儘管所有未解決的錯誤都消失了,但我仍然懷疑'我是否設置了正確的路徑'。 「Eclipse真的很糟糕」。必須花費數小時才能設置IDE進行開發。 – 2015-04-01 10:22:36

16

只是增加了知識基礎,我只是做這與cygwin的WIN7。

這是什麼似乎爲我工作。

包括路徑,C:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include 
D:\dev\cygwin\usr\include 

包括C++的路徑:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include 
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include\c++ 
D:\dev\cygwin\usr\include 

這讓我的Hello World的全新的編譯。

+0

我是來自未來。我來說聲謝謝。這實際上是對我而言的第一件事情。我從未有過這樣一個困難的問候世界。謝謝你,先生。 – nVentimiglia 2014-07-13 15:57:26

+1

不客氣。 – 2014-07-14 03:31:20

1

在ADT我做了以下內容:

  1. 右鍵單擊該項目並選擇Properties
  2. 擴展C/C++通用和選擇預處理器包括路徑,宏等
  3. 選擇CDT用戶設置項
  4. 選擇添加...從右手菜單
  5. 在添加包括目錄更改項目路徑文件系統路徑
  6. 瀏覽到包含您的包含文件
  7. 攪拌,並根據需要
13

轉到項目重複目錄>屬性> C/C++常規>預處理程序包含>提供商 並選擇「CDT GCC內置的編譯器設置「和」CDT CROSS GCC內置編譯器設置「。

+1

...並勾選「使用全球提供商之間共享的項目」框 – Urhixidur 2016-12-06 17:39:09

+0

我還必須檢查「使用全球提供商之間共享的項目」作爲@Urhixidur提到。我嘗試了大量的解決方案,這個內置的eclipse錯誤,這是真正爲我工作的。這些線路很煩人。謝謝! – CodeGuyRoss 2017-09-26 15:42:33

4

我使用的Eclipse與Cygwin和這個工作對我來說:

轉到項目>屬性> C/C++常規>預處理程序包含...>提供商 並選擇「CDT GCC內置的編譯器設置Cygwin [共享]「。

1

通常情況下,Eclipse應該能夠自動解析標​​準的包含文件。它通過調用gcc並詢問其配置來完成此操作。 Eclipse很可能沒有找到你的gcc(或者至少不是你用於編譯的版本)。

而不是指定項目設置中的所有標準包含路徑,您可能想確保Eclipse找到gcc。在啓動Eclipse之前,將找到gcc的目錄添加到PATH環境變量中。

如果您希望不同的項目使用不同的編譯器,那麼您可能需要調整發現選項。這些在默認情況下是隱藏的,所以首先從窗口>首選項> C/C++>屬性頁面設置>顯示「發現選項」頁面啓用它們。然後你可以在項目屬性中的C/C++ Build> Discovery Options下找到它們。

3

我正在與多個交叉編譯器配置,其中我需要使用不同位置的STD頭文件(和其他環境變量)。

解決方法是設置索引器,使其使用活動配置。
不幸的是,由於一些bug in eclipse,則該選項沒有存儲在本地,所以你必須,如果你想再次當你打開Eclipse將配置保存到使用工作區配置。

窗口 - >首選項 - > C/C++ - >索引 - >使用積極構建配置

這將使日食使用設置與項目的積極十字GCC配置正確的編譯器。

+0

有同樣的問題,交叉編譯到ESP8266。太糟糕了,這個頁面如此擁擠,不得不自己弄清楚。 – 2016-05-07 12:35:45

+0

謝謝你。在創建多個交叉編譯器配置(針對不同版本的ESP32「ESP-IDF」嵌入式SDK)後,我也遇到了這個問題。索引器沒有拾取正確的標題。此設置似乎允許索引器使用相同的環境作爲活動配置,在我的情況下,它允許它拿起正確的標題。 – meowsqueak 2018-01-17 02:32:29

0

我配置路徑和符號的錯誤是最初爲不同語言配置了包含路徑。我正在使用CDT和Cygwin gnu C++。所以你必須在GNU C++語言下配置符號和路徑。enter image description here

0

作爲(當前)頂部的答案筆記,有必要指定構建文件夾的位置,可以通過右鍵單擊項目,然後選擇Properties-> C/C++ General- >路徑和符號。

剩下的問題就是需要添加什麼樣的路徑。

如果你交叉編譯或做一些花哨的,你可能知道你需要什麼路徑,並以何種順序(或應該看看你的編譯器和/或其他依賴的文檔)。

對於那些尋找最基礎的:如果你有GCC設置正確的命令行訪問,並需要知道什麼是默認包括它使用的路徑,只問它。

根據你的語言感興趣,用途:

gcc -x c -v -E /dev/null 
gcc -x c++ -v -E /dev/null 

...這將列出所使用的默認編譯器設置調用gcc的時候(這個命令也能當「海灣合作委員會」是真的是clang的別名,就像在OSX上一樣)。

在Windows上,注意/dev/null只是一個空文件輸入一個簡單的簡寫(而無需創建一個)。

朝下方將是列表的include目錄:

#include "..." search starts here: 
#include <...> search starts here: 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/include 
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include 
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory) 
End of search list. 

如果輸入上市,成爲Eclipse的路徑和符號對話框這裏列出的目錄,順序是,Eclipse CDT應該能夠找到標準頭文件,也許還有一些特定於您的操作系統的額外頭文件

(與感謝devnull's answer到一個相關的問題。)

1

我米使用基於CodeWarrior IDE的嵌入式項目蝕和我剛通過刪除和添加再次源地址,以項目投資Properities->Ç解決了這個問題/ C++ General-> Path和Sybols-> Include Directories。這意味着有很多理由採取「未解決的包含:」的信息,也有很多解決方案。