MFC LNK2019: 无法解析的外部符号

本文解决在MFC项目中遇到的无法解析的外部符号问题,包括错误LNK2019和生成失败的情况。通过分析代码实现,提供了解决方案并解释了错误原因。

当你遇到下面问题:

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 声明:

C/C++ code
?
1
2
3
public :
     static  UINT  WriteS( LPVOID  pParam );
     static  UINT  WriteY( LPVOID  pParam);



下面是XXXDlg.cpp实现
声明如下:

C/C++ code
?
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;
}



我在点击按钮控件,做了创建线程,然后显示:

C/C++ code
?
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();
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值