如何使用C 将函数声明为全局

How to declare the function as global using C++?

本文关键字:声明 全局 函数 何使用      更新时间:2023-10-16

我在Visual Studio中使用MFC。 这是在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 xz)

>

请指导我解决该错误。谢谢

声明

extern CClientSocketDlg StartClient();

告诉编译器StartClient是一个独立的功能,不采用任何参数并返回CClientSocketDlg对象的副本。

定义

bool CClientSocketDlg::StartClient() { ... }

告诉编译器,类CClientSocketDlg具有一个名为StartClient的成员函数,该函数不进行参数并返回bool

这两个不一样。

在发生错误的情况下,似乎您正在调用独立函数,而不是成员函数,并且仅被声明为未定义(即该功能没有实现)。如果您是要从 class 调用StartClient,则应声明对象并在对象中调用函数:

CClientSocketDlg dlg;
dlg.StartClient();

如果您打电话给独立式,您必须实现该功能。

您可以使用范围分辨率运算符访问C

中的全局函数