2011-11-08 83 views
1

我討厭這些鏈接器錯誤,任何想法如何擺脫它們?鏈接器錯誤LNK1120和LNK2001

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)" ([email protected]@@QAEXXZ) SecondDlg.obj 
+0

順便說一句,這些是鏈接器錯誤,不是編譯器的。 –

回答

1

我刪除了ON_BN_CLICKED(IDC_BUTTON4, &SecondDlg::OnBnClickedButton4)和IDC_BUTTON4的所有其他實例。我的編譯器試圖編譯一些不在那裏的東西。

1

嗯,我沒有太多的信息,瞭解哪些是怎麼回事。 你確定你寫了OnBnClickedButton4方法嗎?也許只是宣佈。 看看你的C++文件。

你能告訴我們該方法的聲明嗎? 你能給我們提供更多的信息嗎?

也許您在不需要時使用關鍵字「extern」?

5

市民:無效__thiscall SecondDlg :: OnBnClickedButton4(無效)

鏈接器試圖,最好告訴你調用SecondDlg::OnBnClickedButton4(void)不能得到解決。這意味着它無法從任何來源(對象文件是精確的)文件中找到成員函數的定義。你只是在接口中提供了聲明,而不是在任何地方定義(即實現)。

6

錯誤從以下原因之一可能來自:

  • 你忘了實現該方法在cpp文件
  • cpp文件不包含在編譯
  • 您忘記匯出你的班級與_declspec(dllexport)
  • 你不鏈接到庫SecondDlg駐留
0

這將幫助其他人閱讀此Q & A,即使此特定問題已解決。

我以前有過這些鏈接器錯誤,並且一般情況下取消使用全局變量似乎是答案。使用非常量全局變量只會讓編譯器和鏈接器(以及程序員)感到困惑,特別是隨着程序規模的增大。