链接器错误LNK1120和LNK2001

时间:2011-11-08 13:40:41

标签: c++ visual-c++ linker-errors visual-c++-2005

我讨厌这些链接器错误,任何想法我怎么能摆脱它们?

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

5 个答案:

答案 0 :(得分:7)

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

  • 您忘记在cpp文件
  • 中实施该方法
  • cpp文件未包含在编辑
  • 您忘记使用_declspec(dllexport)
  • 导出课程
  • 您没有链接SecondDlg所在的图书馆

答案 1 :(得分:5)

  

public:void __thiscall SecondDlg :: OnBnClickedButton4(void)

链接器正在尝试告诉您无法解析对SecondDlg::OnBnClickedButton4(void)的调用。这意味着它无法从任何已编译的源(要精确的目标文件)文件中找到成员函数的定义。您刚刚在界面中提供了声明,但没有在任何地方提供它的定义(即实现)。

答案 2 :(得分:1)

我没有太多信息可以了解正在发生的事情。 你确定你写过OnBnClickedButton4方法吗?也许刚刚宣布。 查看您的C ++文件。

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

这有助于其他阅读此问答的人,即使这个特定问题已经解决了。

我之前遇到过这些链接器错误,并且一般来说消除全局变量的使用似乎就是答案。使用非const全局变量只会使编译器和链接器(以及程序员)感到困惑,特别是当程序的大小增加时。