C/Visual C - ERROR DE LINKADO¿?

 
Vista:

ERROR DE LINKADO¿?

Publicado por luis (1 intervención) el 17/11/2004 16:51:08
Como demonios se solucionan los errores de linkado en C++?O porque se producen?
ME VOY A DEJAR LA VISTA Y NO SACO EL FALLO C++!!!
GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ERROR DE LINKADO¿? (1/2)

Publicado por fernando.gomez (1603 intervenciones) el 17/11/2004 22:24:11
Ok, primero que nada, guarda la calma :D, me han salido canas verdes por problemas similares.

Antes que nada, sería bueno que tuvieras a la mano la documentación de tu compilador, a veces te dicen cómo solucionar el problema, o por lo menos las causas. En el caso de Visual C, en www.msdn.microsoft.com/visualc encontrarás una referencia muy amplia.

Generalmente, los errores de enlazado se dan porque se declaró una función, clase, variable, estructura, etc, pero no se encontró su implementación. A veces se da esto porque nos equivocamos entre el prototipo y la implementación. Por ejemplo:

void Funcion1(char* szChar);

int main()
{
char sz[50];
Funcion1(sz);
return 0;
}

void Funcion1(const char* szChar)
{
// cualquier cosa
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ERROR DE LINKADO¿? (2/2)

Publicado por fernando.gomez (1603 intervenciones) el 17/11/2004 22:24:35

generará el mismo problema. Esto, porque Funcion1 recibe como parámetro un char*. Dentro de main, mando llamar a Funcion1, que si bien aún no ha sido implementada, el prototipo sirve para que el compilador no proteste. Posteriormente, implemento la función, pero por algún descuido, declaro el parámetro como const char*, que es diferente de char*. Entonces, para el compilador son dos funciones totalmente diferentes, y compila. Pero cuando intenta enlazar, se da cuenta de que Funcion1(char*) está declarada, PERO NO IMPLEMENTADA. Es cuando lanza los problemas de enlazado.

Generalmente estos errores son por variantes de lo que te acabo de comentar. Pasa también para clases y variables. En particular, cuando empleas librerías, debes cuidarte de que a tu programa le indicas qué librerías empleas, ya que en tiempo de enlazado, irá a buscar la implementación a la librería (estática o dinámica) correspondiente.

Saludos.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar