2012-09-12 151 views
2

可能重複:
static, extern, const in header file錯誤LNK2001:無法解析的外部符號的Visual C++

我在Visual C++工作並具有此錯誤。

我在global.h中分別聲明瞭兩個外部行。

extern CSocketManager m_SocketManager[10]; 
extern CSocketManager* m_pCurServer; 
 
1>ServerSocketDlg.obj : error LNK2001: unresolved external symbol "class CSocketManager *      m_pCurServer" ([email protected]@[email protected]@A) 

1>SocketManager.obj : error LNK2001: unresolved external symbol "class CSocketManager * m_pCurServer" ([email protected]@[email protected]@A) 

有沒有人有一個想法是什麼可能會導致這些錯誤?

+3

extern必須在某處定義:http://stackoverflow.com/questions/9908151/static-extern-const-in-header-file –

回答

6

在.h中聲明爲extern的對象也必須在.cpp文件中聲明。

問題是鏈接器不知道在哪裏找到這兩個對象。

解決方案:您還必須在.cpp文件中聲明m_pCurServer,因爲它是正在編譯的.cpp文件,而不是頭文件。

+1

換句話說,'extern'關鍵字說「這件事我是描述這裏存在的地方,相信我!「。如果它實際上並不存在,並且您嘗試使用它,則鏈接器會爲您提供您收到的錯誤。 – mah

+0

非常感謝你 - 它適用於我:) – Nabeel

+0

不客氣:) – Nikopol

相關問題