在主线程里另外创建了一个工作线程,
BOOL CMainFrame::FTPConnect() //在这里创建工作线程
{
if(m_pThread=AfxBeginThread(CFTPConnThread::FTPConnectProc, NULL, THREAD_PRIORITY_LOWEST,
0, CREATE_SUSPENDED, NULL))
------------
}
class CFTPConnThread : public CWinThread
{
        -----------
public:
static UINT FTPConnectProc(LPVOID lParam);//static函数
public:
static HINTERNET m_hFTPConn;   //FTPConnectProc调用这两个静态变量,连接时会出错。
static HINTERNET m_hInetSession; --------------
}; UINT CFTPConnThread::FTPConnectProc(LPVOID lParam);
{
    在这里用到m_hFTPConn m_hInetSession这两个成员
}
编译不出错,连接时报error LNK2001: unresolved external symbol "public: static void * CFTPConnThread::m_hInetSession" (?m_hInetSession@CFTPConnThread@@2PAXA)
不知到啥原因,哎,高手帮帮忙,万分感谢

解决方案 »

  1.   

    类静态成员需要自己为其分配空间,在cpp文件中加上两行代码:
    HINTERNET CFTPConnThread::m_hFTPConn = NULL;
    HINTERNET CFTPConnThread::m_hInetSession = NULL;帖子发重复了,趁现在还没有人回复,可以把另一帖删掉。
      

  2.   

    UINT CFTPConnThread::FTPConnectProc(LPVOID lParam)//static函数
    {
        CFTPConnThread::m_hFTPConn = NULL; 
        CFTPConnThread::m_hInetSession = NULL;
             -------------------
    }
      

  3.   

    HINTERNET CFTPConnThread::m_hFTPConn = NULL; 
    HINTERNET CFTPConnThread::m_hInetSession = NULL;
    UINT CFTPConnThread::FTPConnectProc(LPVOID lParam)//static函数 
    {         ------------------- 
    }
      

  4.   

    类静态成员需要自己为其分配空间,在cpp文件中加上两行代码: 
    HINTERNET CFTPConnThread::m_hFTPConn = NULL; 
    HINTERNET CFTPConnThread::m_hInetSession = NULL; 
      

  5.   


    怎么不对?添加到CPP文件的最前面(当然要在包含语句以后)
      

  6.   

    类的静态数据成员,是跟类的对象无关的!
    它的定义需要再cpp中实现的,而不是等到对象去初始化它们!!!
      

  7.   

    变量和线程函数 都在cpp 文件的顶部声明 啥事也没有