0

我知道大部分時間你會得到UNRESOLVED EXTERNAL SYMBOL不包括庫或者在類中沒有正確定義函數,但是我得到的結構相同的錯誤。 我有幾個文件的.cpp和.h在.hi的一個定義cpp中結構的未解析外部符號?

extern struct MyDataStruct StructData; 

我包括此.H在我的.cpp文件,但我得到

'struct MyDataStruct StructData' unresolved external symbol 

我了規定這種結構我沒有任何類前綴訪問它。

在此先感謝。

回答

3

您需要在一個和一個唯一的.cpp文件中實際定義它,即在它的目標文件中分配一些空間,例如,

struct MyDataStruct StructData; 

注意在這種情況下沒有外部。

雖然所有其他代碼通過保留extern的頭文件中的聲明來訪問它,這會告訴編譯器和鏈接程序在可執行文件中的其他位置可以解析引用。

+0

但我想有相同的結構共享幾個.cpp文件... – Cooker 2012-07-18 23:00:25

+0

你做的內存是在一個地方,所有其他.cpp文件可以訪問它 – Mark 2012-07-18 23:01:07

+0

基本上結構需要分配的地方,所以如果你在一個任意的.cpp文件中聲明它,任何其他的.cpp文件都可以用extern訪問它。 – AniDev 2012-07-18 23:07:11