错误LNK2001:未解析的外部符号“public:void __thiscall

时间:2013-07-18 16:15:40

标签: visual-studio-2010 visual-c++ mfc lnk2001

我正在使用MFC编写Windows程序。我在创建项目时使用了这些设置 文件 - >新项目 - > MFC应用
在MFC应用程序向导中,我选择了:
申请类型:基于对话
资源语言:英语(美国)
使用Unicode库
项目风格:MFC标准
使用MFC:在静态库中使用MFC
主框架样式:勾选框架,系统菜单和关于框
高级功能:选中ActiveX控件,通用控件清单和支持重新启动管理器
对话标题:P2
生成的类:Cp2App和Cp2Dlg
我还没有为项目添加任何代码。我刚刚在表单中添加了控件:

enter image description here
但是当我尝试运行项目时,我得到错误:
1错误LNK2001:未解析的外部符号“public:void __thiscall CP2Dlg :: OnBnClickedButton2(void)”(?OnBnClickedButton2 @ CP2Dlg @@ QAEXXZ)
2错误LNK1120:1个未解析的外部
我知道我可以启动一个新项目以避免错误。但我想知道导致这个问题的原因并解决了吗?

注意:第一个错误发生在P2Dlg.obj中,第二个错误发生在P2.exe文件中。

编辑部分:事实上我认为这个错误是因为我不小心双击了Button2并创建了事件处理程序BnClickedButton2并将其删除。现在我尝试再次创建这个事件处理程序,但我不能,因为当我右键单击button2并选择在事件处理程序向导中添加eventhandler时,选项BN_CLICKED处于非活动状态。
我想知道如何解决这类问题。请帮帮我?

已编辑的第2部分:我已使用Add EventHandler在P2.cpp文件中添加了此功能,但这并未解决问题:

void CP2App::OnBnClickedButton2()
{
    // TODO: Add your control notification handler code here
}  

应该添加函数CP2Dlg::OnBnClickedButton2,但我无法添加它。这是不活跃的?????

1 个答案:

答案 0 :(得分:0)

对话框的消息映射中有一行试图调用您删除的功能。将来如果删除消息处理函数,也会删除消息映射中的相应条目。

消息处理程序必须位于对话框类中。 (发送消息的位置。)清除消息映射和功能并重建所有消息。然后,您可以再次使用“添加事件”向导。