2011-06-28 22 views
5

這是一個程序:的Visual C++ 2010 - 致命錯誤LNK1169:一個或多個多重定義符號找到

#include <iostream> 
using namespace std; 

int main() { 
cout << "Enter a number"; 
int i; 
cin >> i; 
try { 
    if(i == 0) throw 0; 
    if(i == 2) throw "error"; 
} catch(int i) { 
    cout << "can't divide by 0"; 
} 
    catch(...) { 
     cout << "catching other exceptions"; 
    } 
} 

在編譯(微軟的Visual C++ 2010和的Windows 7快遞),我得到它說的錯誤:

致命錯誤LNK1169:一個或多個 多重定義符號找到

+3

嘗試刪除代碼,直到錯誤消失 - 這會給你一個線索。 – Beta

+0

我在XP上看不到使用Visual Studio C++ 2010的錯誤。 – 2011-06-28 12:34:02

+11

我喜歡你這個問題的第一行!無論如何,它在linux上使用g ++編譯得很好。 – tjm

回答

16

其實在這段代碼中沒有錯誤

源文件的數量可能是問題。 在同一編譯器中嘗試將此代碼作爲新項目,或嘗試從文本區域左側的source files選項(即您在編寫代碼的位置)中刪除文件。

這應該編譯然後。

+0

爲什麼源文件的數量會成爲問題?/GenuinelyCurious – weberc2

+2

它編譯整個項目並找到多種主要方法。 – saplingPro

+0

Gotcha。我以爲你說源文件的數量可能是問題。好像可以編譯的文件數量有限制。我現在知道了。謝謝。 – weberc2

-3

我懷疑從這一行出現在你的錯誤:

catch(int i) 

你已經有了一個在這個範圍內的變量。此外,你應該捕獲異常,而不是整數。

+0

我試圖用j代替我,但沒有工作 –

+0

我很確定我處於不同的範圍。 – 2011-06-28 12:35:53

2

嘗試將您的int main()更改爲int submain()

+0

請不要回答幾年前已接受答案的舊線程。相反,用你的精力來幫助解決當前的問題 – alestanis

4

最後,我認爲我發現了這個問題最合理的解釋,因爲您知道我們通常將main分配給我們的.cpp文件中的一個整數(int main),有時我們可能會在同一個文件中編寫多個.cpp文件項目使用相同的(int main()).so作爲程序,這意味着我們在同一個項目文件夾中意外地重複了兩次相同的函數。我們要做的就是用(int main)寫一個.cpp文件,而在同一個項目中的其他.cpp文件使用(int submain)寫入它們並查看gona發生了什麼。

相關問題