我在Visual Studio中使用MFC。 這是函數StartClient,在CPP文件中定義,並在.h文件中聲明爲如何使用C++將函數聲明爲全局函數?
protected:
bool StartClient(); // in Client.h file
bool CClientSocketDlg::StartClient() //in Client.cpp file
{
CString strServer;
m_ctlIPAddress.GetWindowText(strServer);
------
-----
return bSuccess;
}
我也宣告這個
extern CClientSocketDlg StartClient(); // in global.h
我要撥打的StartClient()函數在某些其它XYZ .cpp文件。這就是爲什麼我宣佈這個功能是全球性的。但它不起作用。
這給了錯誤:
錯誤LNK2001:無法解析的外部符號 「類CClientSocketDlg __cdecl StartClient(無效)」(?StartClient @@ YA AVCClientSocketDlg @@ XZ)
請指導我解決這個錯誤。由於
你的第一個代碼段是沒有意義的。是.h文件中的類定義中的第一行,而其餘部分來自.cpp文件中的方法定義?如果是這樣,那麼說。 –
你的問題並不是關於聲明一個全局函數,你似乎已經做到了這一點。你得到的錯誤是說你沒有正確定義函數。要定義你的全局函數,在你的cpp文件中寫下這個「CClientSocketDlg StartClient(){...}」。不幸的是,我認爲真正的問題是你的問題是要求你不想要的東西。所以,也許你應該解釋真正的問題是什麼,並尋求解決方案。並且發佈一些更多的代碼,你的代碼看起來相當混亂,但沒有看到真正的代碼,很難提供幫助。 – john
我在問題中增加了一些細節 – Nabeel