我讨厌这些链接器错误,任何想法我怎么能摆脱它们?
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
答案 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全局变量只会使编译器和链接器(以及程序员)感到困惑,特别是当程序的大小增加时。