1

我讨厌这些链接器错误,知道如何摆脱它们吗?

Error   2   fatal error LNK1120: 1 unresolved externals C:\Users\**********\Documents\Visual Studio 2005\Projects\Machine2\Debug\Machine2.exe

Error   1   error LNK2001: unresolved external symbol "public: void __thiscall SecondDlg::OnBnClickedButton4(void)" (?OnBnClickedButton4@SecondDlg@@QAEXXZ) SecondDlg.obj
4

5 回答 5

7

该错误可能来自以下原因之一:

  • 您忘记在cpp文件中实现该方法
  • cpp文件不包含在编译中
  • 你忘了导出你的课程_declspec(dllexport)
  • 您没有链接到SecondDlg所在的图书馆
于 2011-11-08T13:45:58.363 回答
5

公共:无效__thiscall SecondDlg::OnBnClickedButton4(void)

链接器正在尝试最好告诉您调用SecondDlg::OnBnClickedButton4(void)无法解决。这意味着它无法从已编译的任何源(准确地说是目标文件)文件中找到成员函数的定义。您只是在接口中提供了声明,但在任何地方都没有提供定义(即实现)。

于 2011-11-08T13:45:33.270 回答
1

好吧,我没有太多信息来了解发生了什么。您确定您编写了 OnBnClickedButton4 方法吗?也许刚刚宣布。查看您的 C++ 文件。

你能告诉我们方法的声明吗?你能给我们更多的信息吗?

也许您在不需要时使用关键字“extern”?

于 2011-11-08T13:42:03.003 回答
1

我删除ON_BN_CLICKED(IDC_BUTTON4, &SecondDlg::OnBnClickedButton4)了 IDC_BUTTON4 的所有其他实例。我的编译器试图编译一些不再存在的东西。

于 2011-11-09T09:48:23.383 回答
0

这将对阅读此问答的其他人有所帮助,即使此特定问题已得到解决。

我之前遇到过这些链接器错误,通常消除全局变量的使用似乎是答案。非常量全局变量的使用只会让编译器和链接器(以及程序员)感到困惑,尤其是当您的程序变大时。

于 2016-12-06T03:51:08.963 回答