当你遇到下面问题:
CeventThreadDlg.obj : error LNK2019: 无法解析的外部符号 "public: static unsigned int __cdecl CCeventThreadDlg::WriteY(void *)" (?WriteY@CCeventThreadDlg@@SAIPAX@Z),该符号在函数 "public: void __thiscall CCeventThreadDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CCeventThreadDlg@@QAEXXZ) 中被引用
1>CeventThreadDlg.obj : error LNK2019: 无法解析的外部符号 "public: static unsigned int __cdecl CCeventThreadDlg::WriteS(void *)" (?WriteS@CCeventThreadDlg@@SAIPAX@Z),该符号在函数 "public: void __thiscall CCeventThreadDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CCeventThreadDlg@@QAEXXZ) 中被引用
1>E:\code\MFC\CeventThread\Debug\CeventThread.exe : fatal error LNK1120: 2 个无法解析的外部命令
1>
1>生成失败。
来源:MFC 中遇到:无法解析的外部符号 [VC/MFC 进程/线程/DLL]
这个是在XXXDlg.h 声明:
1
2
3
|
public
:
static
UINT
WriteS(
LPVOID
pParam );
static
UINT
WriteY(
LPVOID
pParam);
|
下面是XXXDlg.cpp实现
声明如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
static
UINT
WriteS(
LPVOID
pParam )
{
CEdit *cEdit = (CEdit*)pParam;
for
(
int
i =0; i<10; i++)
{
sy_str =
"S"
;
cEdit->SetWindowTextW(_T(
"S"
));;
Sleep(1000);
}
WriteSY.SetEvent();
return
0;
}
static
UINT
WriteY(
PVOID
pParam)
{
CEdit *cEdit = (CEdit*)pParam;
WaitForSingleObject(WriteSY,INFINITE);
for
(
int
i =0; i<10; i++)
{
sy_str =
"Y"
;
cEdit->SetWindowTextW(_T(
"S"
));;
Sleep(1000);
}
WriteSY.SetEvent();
return
0;
}
|
我在点击按钮控件,做了创建线程,然后显示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
void
CCeventThreadDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CWinThread *pWriteS=AfxBeginThread(WriteS,
&C_EditS,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pWriteS->ResumeThread();
CWinThread *pWriteY=AfxBeginThread(WriteY,
&C_EditY,
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED);
pWriteY->ResumeThread();
}
|