簡體   English   中英

Eclipse中未定義的外部參考

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM