2011-06-28 23 views
5

este es un programa:Visual C++ 2010 - LNK1169 error fatal: una o más multiplican símbolos definidos encontrados

#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"; 
    } 
} 

Al compilar (Microsoft Visual C++ 2010 Express en Windows 7), me sale el error que dice:

fatal error LNK1169: uno o más símbolos se multiplican definidos encontraron

+3

Intenta eliminar el código hasta que desaparezca el error, eso te dará una pista. – Beta

+0

No veo el error al usar Visual Studio C++ 2010 en XP. –

+11

¡Me gusta su primera línea de esta pregunta! De todos modos, compila bien para mí usando g ++ en Linux. – tjm

Respuesta

16

En realidad no hay ningún error en este código.

El número de archivos de origen podría ser el problema. Pruebe este código como un nuevo proyecto en el mismo compilador o intente eliminar los archivos de la opción source files en el lado izquierdo del área de texto (es decir, donde está escribiendo el código)

Esto debería compilarse a continuación.

+0

¿Por qué la cantidad de archivos de origen sería un problema?/GenuinelyCurious – weberc2

+2

compila todo el proyecto y encuentra varios métodos principales. – saplingPro

+0

Gotcha. Pensé que estabas diciendo que la cantidad de archivos fuente podría ser el problema. Como si hubiera un límite en la cantidad de archivos que se pueden compilar. Entiendo ahora. Gracias. – weberc2

-3

que sospecha que su error proviene de esta línea:

catch(int i) 

Ya tiene una variable llamada así en este rango. Además, debería detectar excepciones, no enteros.

+0

Intenté reemplazar i con j pero no funcionó –

+0

Estoy bastante seguro de que el i está en un alcance diferente. –

2

intente cambiar su int main() a .

+0

No responda los hilos antiguos que han aceptado respuestas dadas hace años. Usa tu energía para ayudar en las preguntas actuales en su lugar – alestanis

4

Finalmente creo que encontré la explicación más plausible para el problema, ya que sabemos que generalmente asignamos main como un entero (int main) en nuestro archivo .cpp y, a veces, podemos escribir más de un archivo .cpp en el mismo proyecto con el mismo (int main()) .so para el programa, lo que significa que accidentalmente hemos repetido la misma función dos veces en la misma carpeta del proyecto. Lo que tenemos que hacer es escribir un archivo .cpp con (int main) mientras los otros archivos .cpp en el mismo proyecto los escriben con (int submain) y ven lo que sucede.

Cuestiones relacionadas