2012-03-13 43 views
-3

問題是,我不知道問題出在哪裏,所以我不能在這裏粘貼我所有的源代碼。錯誤LNK1152:無法解析一個或多個未修飾的符號。怎麼修?

錯誤是一個LNK錯誤,確切地說是LNK 1152。 我得到3個警告給它帶來:

error LNK1152: cannot resolve one or more undecorated symbols 
warning LNK4002: "int __clrcall main(cli::array<class System::String^>^)" ([email protected]@[email protected]@@@Z) defined in Release\Note Reminder.obj 
warning LNK4002: "int __clrcall main(int,char * * const)" ([email protected]@[email protected]) defined in Release\INIwriter.obj 
warning LNK4022: cannot find unique match for symbol 'main 

我不知道如何解決這個錯誤。 有人有過這個,並修復它?

+0

'這個問題的問題是,我不知道問題出在哪裏,所以我不能在這裏粘貼所有的源代碼。「然後,你沒有試圖將問題縮小到10 -20行測試用例作爲您的第一個調試步驟之一,這是不幸的。另外,這不是C++。 – 2012-03-13 19:57:19

+0

似乎你有'main'函數的兩個定義。一個在對象文件「Note Reminder.obj」中,另一個在文件「INIwriter.obj」中。每個功能都有不同的簽名。第二個似乎是該計劃的切入點。 – user1192525 2012-03-13 19:57:33

+0

從錯誤消息的外觀來看,*你*可能認爲它是C++,但編譯器/鏈接器認爲你使用的是C++/CLI,這不是一回事。在這種情況下,編譯器認爲管理代碼將如何處理。 – 2012-03-13 19:58:04

回答

2

這似乎是C++ - CLI或其他東西,而不是C++。您在多個目標文件中定義main。你甚至會被告知這是哪些文件。

+0

這解決了我的問題。 – Miracle 2012-03-13 20:08:28

+0

這解決了我的問題! 謝謝! – Miracle 2012-03-13 20:08:48

+0

@Miracle:不客氣。 – 2012-03-13 20:14:12

2

如果您不明白爲什麼會出現錯誤,則應首先解決警告,本例中的警告非常簡單。

warning LNK4022: cannot find unique match for symbol 'main

..你有兩個main功能,刪除或重命名其中的一個。這也應該解決你的鏈接錯誤。

+0

嗯,那很難,因爲我的源代碼非常非常大。我可以嘗試使用ctrl + F並搜索'main',但我已經做了,唯一發現的是mainDLL。 – Miracle 2012-03-13 19:57:34

+0

如果您沒有注意到您的函數定義有衝突,您的源代碼如何變得「非常糟糕」?你有沒有試圖在運行過程中一次運行它? – 2012-03-13 19:58:36

+0

咋,但我已經試着評論所有的零件,並將它們一點一點地分解。並且錯誤仍然彈出, 難道它不是項目屬性中的東西嗎? – Miracle 2012-03-13 20:00:27