2013-07-18 40 views
0

我使用MFC編寫Windows程序創建項目時,我已經使用這些設置
文件 - >新建項目 - > MFC applicatioin
。而在MFC應用程序嚮導我已經選用:
應用類型:基於對話框
資源語言:英語(美國)
使用Unicode庫
項目風格:MFC標準
使用MFC的:在靜態庫中使用MFC
主要框架樣式:粗框,系統菜單和關於框中​​打勾
高級功能:ActiveX控件,常見的控制清單和支持重啓管理器被選中
對話框的標題:P2
生成的類:Cp2App和Cp2Dlg
我還沒有添加任何代碼的項目。我剛剛添加控件形式:錯誤LNK2001:無法解析的外部符號「市民:無效__thiscall

enter image description here
但是當我嘗試運行該項目,我得到的錯誤:
1-錯誤LNK2001:無法解析的外部符號「市民:無效__thiscall CP2Dlg :: OnBnClickedButton2(無效)」(OnBnClickedButton2 @ CP2Dlg @@ QAEXXZ?)
2錯誤LNK1120:1周無法解析的外部
我知道,我可以開始一個新的項目,以避免錯誤。但我想知道是什麼原因導致了這個問題並解決了它?

注意:第一個錯誤發生在P2Dlg.obj中,第二個錯誤發生在P2.exe文件中。

編輯部分:事實上,我認爲這個錯誤是因爲我不小心雙擊Button2並創建了事件處理程序BnClickedButton2並將其刪除。現在我嘗試再次創建這個事件處理程序,但是我不能,因爲當我右鍵單擊button2並在事件處理程序嚮導中選擇添加事件處理程序時,選項BN_CLICKED處於非活動狀態。
我想知道如何解決這類問題。請幫幫我嗎?

編第2節:我添加使用Add EventHandler在P2.cpp文件這一功能,但這並沒有解決問題:

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

功能CP2Dlg::OnBnClickedButton2應補充,但我不能添加它。它是無效的?????

+0

可能重複[什麼是未定義的引用/未解析的外部符號錯誤,以及如何解決它?:聲明但未定義變量或函數。](http://stackoverflow.com/questions/12573816/what -is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix) –

+0

你不應該在不知道Win32編程的情況下嘗試使用MFC。 Charles Petzold可能仍然是學習後者的最佳資源。如果/當你決定從MFC開始時,你應該至少能夠讀*嚮導生成的代碼。 Jeff Prosise是任何MFC開發人員必讀的資料。 – IInspectable

回答

0

對話框的消息映射中有一行嘗試調用您刪除的函數。將來如果刪除消息處理函數,也會刪除消息映射中的相應條目。

消息處理程序必須位於對話框類中。 (這是消息發送的地方。)清理消息映射和函數並重建所有消息。然後你可能會再次使用添加事件嚮導。

+0

謝謝@ ScottMcP-MVP如何刪除消息映射? – sepideh

+0

@sepideh通過刪除其聲明'DECLARE_MESSAGE_MAP()'和實現'BEGIN_MESSAGE_MAP(cls,base)'...'END_MESSAGE_MAP()'來刪除消息映射。我不知道你爲什麼想這樣做。 – IInspectable

相關問題