2

重複の可能性:
staticexternconstヘッダー ファイル内

Visual C++ で作業していて、このエラーが発生しています。

以下の 2 つの extern 行を global.h で個別に宣言しました。

extern CSocketManager  m_SocketManager[10];
extern CSocketManager* m_pCurServer; 
1>ServerSocketDlg.obj: エラー LNK2001: 未解決の外部シンボル "class CSocketManager * m_pCurServer" (?m_pCurServer@@3PAVCSocketManager@@A)

1>SocketManager.obj : エラー LNK2001: 未解決の外部シンボル "class CSocketManager * m_pCurServer" (?m_pCurServer@@3PAVCSocketManager@@A)

これらのエラーの原因を知っている人はいますか?

4

1 に答える 1

6

.h で extern として宣言されたオブジェクトは、.cpp ファイルでも宣言する必要があります。

問題は、リンカーが 2 つのオブジェクトを見つける場所を認識していないことです。

解決策: ヘッダーではなく .cpp がコンパイルされるため、.cpp ファイルで m_pCurServer を宣言する必要もあります。

于 2012-09-12T15:12:32.943 に答える