[英]Undefined Extern Reference in Eclipse
我正在嘗試在Eclipse中編譯一些簡單的c ++代碼,在Visual Studio中可以正常編譯。
我有以下文件(為清楚起見,已重命名和簡化)。 Main.cpp中還有其他用於主要功能的樣板代碼,以此類推,我已經省略了。
oo
#ifndef FOO_H
#define FOO_H
extern Int foo;
#endif
Foo.cpp
Int foo = 0;
Main.cpp
#include "Foo.h"
void bar() {
foo = 1;
}
當我嘗試在Eclipse中進行編譯時,出現以下錯誤(省略了長路徑)
Main.o: in function bar():jni/Main.cpp:25: error: undefined reference to 'foo'
collect2: ld returned 1 exit status
如果將鼠標懸停在Main.cpp中的foo上,它將顯示它的工具提示,如果我右鍵單擊它並選擇“打開聲明”,它將帶我到Foo.cpp並突出顯示foo聲明。 因此,顯然可以找到它,但是無法編譯。
如果將聲明移至Main.cpp(如下所示),則編譯正常。
Main.cpp
#include "Foo.h"
Int foo = 0;
void bar() {
foo = 1;
}
因此,由於某種原因,當Eclipse放置在與實際引用它的cpp文件不同的cpp文件中時,它看不到該聲明。 為什么會這樣,我該如何解決? 不幸的是,無法將聲明移至Main.cpp,因為需要在多個cpp文件中訪問extern。
此錯誤意味着Foo.cpp的內容未鏈接到可執行文件(並且可能未編譯)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.