class CMySnifferDlg : public CDialog
{............
public:
static SOCKET SockRaw;
static void CheckSockError(int iErrorCode,char *pErrorMsg);
static UINT StartSniff(LPVOID pParam);
}线程函数StartSniff做成了类成员了,所以用了static它涉及的一个变量SockRaw也弄成staticAfxBeginThread(StartSniff,(LPVOID)this); UINT CMySnifferDlg::StartSniff(LPVOID pParam)
{
//////////////////////////////
SockRaw=socket(AF_INET,SOCK_RAW ,IPPROTO_IP);
.......
}
但编译时出错MySnifferDlg.obj : error LNK2001: 无法解析的外部符号 "public: static unsigned int CMySnifferDlg::SockRaw" (?SockRaw@CMySnifferDlg@@2IA)
Debug/MySniffer.exe : fatal error LNK1120: 1 个无法解析的外部命令
嘛毛病????谢谢
{............
public:
static SOCKET SockRaw;
static void CheckSockError(int iErrorCode,char *pErrorMsg);
static UINT StartSniff(LPVOID pParam);
}线程函数StartSniff做成了类成员了,所以用了static它涉及的一个变量SockRaw也弄成staticAfxBeginThread(StartSniff,(LPVOID)this); UINT CMySnifferDlg::StartSniff(LPVOID pParam)
{
//////////////////////////////
SockRaw=socket(AF_INET,SOCK_RAW ,IPPROTO_IP);
.......
}
但编译时出错MySnifferDlg.obj : error LNK2001: 无法解析的外部符号 "public: static unsigned int CMySnifferDlg::SockRaw" (?SockRaw@CMySnifferDlg@@2IA)
Debug/MySniffer.exe : fatal error LNK1120: 1 个无法解析的外部命令
嘛毛病????谢谢
放cpp里去吧
启动线程时AfxBeginThread(StartSniff,(LPVOID)this),把this指针当参数传了进去,线程里可直接调用类的公有变量和函数。静态变量需要类外定义,即
SOCKET CMySnifferDlg::SockRaw = INVALID_SOCKET;
为什么这句话我写在cpp的最外面,就不报错,
但写在UINT CMySnifferDlg::StartSniff(LPVOID pParam)函数实现的里边就告诉我
SockRaw被重定义??