【发布时间】:2012-11-07 12:17:14
【问题描述】:
我在 Visual Studio 中使用 MFC。 这是函数StartClient,在cpp文件中定义,在.h文件中声明为
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
我想在另一个 xyz.cpp 文件中调用 StartClient() 函数。这就是为什么我将这个函数声明为全局的。但它不起作用。
这给出了错误:
错误 LNK2001:无法解析的外部符号“class CClientSocketDlg __cdecl StartClient(void)”(?StartClient@@YA?AVCClientSocketDlg@@XZ)
请指导我解决该错误。谢谢
【问题讨论】:
-
您的第一个代码 sn-p 没有意义。第一行来自 .h 文件中的类定义,其余来自 .cpp 文件中的方法定义?如果有,请说出来。
-
你的问题并不是关于声明一个全局函数,你似乎做得对。您得到的错误是您没有正确定义函数。要定义您的全局函数,请在您的 cpp 文件中写入
CClientSocketDlg StartClient() { ... }。不幸的是,我认为真正的问题是您的问题是要求您实际上并不想要的东西。所以也许你应该解释真正的问题是什么并寻求解决方案。再贴一些代码,你的代码看起来很混乱,但是没有看到真正的代码很难解决这个问题。 -
我在问题中添加了一些细节
-
这不是一个全局函数,它是一个成员函数。
标签: c++ visual-studio-2010 mfc