2013-03-07 83 views
1

我有一個文件foo.henum定義枚舉在靜態庫

#ifndef FOO_H 
#define FOO_H 

enum foo_e { foo_a, foo_b, foo_c }; 
typedef enum foo_e foo_t; 

foo_t get_foo(char bar); 

#endif 

文件foo.c導入它(#include "foo.h"),並使用它,沒有任何問題。

我通過Eclipse導出該項目的靜態庫,給我一個libFoo.a

在其他項目中,我使用庫和所有符號解析,編譯和工作正常。只有enum聲明不被識別。 Eclipse告訴我foo_t,foo_a,foo_b,foo_c未定義,而get_foo被定義。

爲什麼?

+0

「foo_t」,「foo_a」,「foo_b」,「foo_c」都不是對象,因此不會出現在(靜態)庫中。如果你包含相關的頭文件,並且Eclispe可以看到它,(假設你還沒有#define FOO_H),那麼這聽起來就像Eclipse有糟糕的一天。 – 2013-03-07 00:22:22

+0

我在項目中使用「foo」作爲靜態庫包含'foo.h'。 – 2013-03-07 00:24:36

+0

您能否在另一個項目中顯示有錯誤的行? – 2013-03-07 01:56:50

回答

0

這是Eclipse的索引項目的一個問題。您可以通過刷新項目的Eclipse索引來解決此問題。

  1. 右鍵單擊,讓錯誤(而不是靜態庫)項目,並選擇Index > Freshen All Files
  2. 再次右鍵單擊Index > Rebuild

您的項目現在應該能夠找到的所有符號在任何包含靜態庫。