En este vídeo hablaremos de los errores del enlazador y de por qué pueden producirse.
Los errores del enlazador se producen cuando el enlazador intenta unir todas las piezas de un
programa para crear un ejecutable y faltan una o más piezas.
Normalmente, esto puede ocurrir cuando el enlazador no puede encontrar un archivo de objetos o bibliotecas.
Corregir errores del enlazador puede ser complicado.
A veces sólo es cuestión de que las rutas sean correctas para que el enlazador sepa dónde están las
piezas que faltan.
Vamos a la luz de código y vamos a forzar un programa para tener un error de enlazador para que pueda ver lo que
el mensaje de error se parece.
El código de ejemplo aquí, por favor ignore la sintaxis.
Esto es en realidad código C plus plus, pero sigue siendo relevante para los errores del enlazador.
No te preocupes por la corriente i o.
No te preocupes por el stdcout.
La idea principal aquí es que los errores de enlace son los mismos en C y en C plus plus.
Y el ejemplo de codificación aquí es sólo tratando de demostrar de nuevo un error del enlazador.
Así que estoy en code light y he creado un proyecto llamado Linker Error basado en la plantilla que utilizamos.
Así que todo lo que tengo es un Principal. cpp que dice Hola mundo.
Ahora vamos a forzar un error del enlazador aquí.
Esto no es algo que quieras hacer normalmente, pero quiero hacerlo para mostrarte cómo es el
error.
Así que lo que voy a decir es que voy a decir extern int c o digamos simplemente X y te explicaré todo
esto en un segundo.
Y luego en el cuerpo de la principal, quiero tratar de utilizar esa X allí.
Es sólo un número entero y digamos que quiero imprimirlo.
Sólo quiero imprimir X, así de simple.
Voy a guardar esto.
Ahora verás si compilo este programa, verás lo que pasa.
Voy a hacer clic derecho compilar.
Obtengo una compilación limpia.
No hay nada malo con el programa, pero cuando trato de construir y ejecutarlo.
Podrías ver el error del enlazador.
Esto es un error clásico del enlazador.
Referencia indefinida a algo.
En este caso resulta ser x.
Además, notarás que el enlazador devolvió uno aquí.
LD devuelve uno que es el estado de salida.
Así que algo iba mal en el enlace.
Obviamente el compilador estaba bien porque no tuvimos errores de compilación.
Lo hacemos de nuevo.
Ahí está la compilación.
Sin errores ni advertencias.
Así que déjame explicarte lo que está pasando aquí.
Permítanme tomar mi lápiz aquí muy rápido.
Y lo que está pasando aquí es que tengo mi archivo CPP principal aquí y va a ser compilado a punto cero principal, digamos, o
punto objeto principal.
Aquí tenemos una referencia a un EXE.
Puedes verlo justo ahí.
Así que aquí tengo una referencia a un exe, que voy a utilizar.
Ahora también tenemos nuestras bibliotecas O stream, por lo que el enlazador necesita agarrar esas bibliotecas y voy a escribir
i o stream aquí para que sepas de lo que estoy hablando.
El enlazador necesita juntar estos dos para crear mi exe principal.
O en este caso creo que sería linker error exe.
Pero ya sabes lo que quiero decir.
Así que la compilación está bien.
Hemos creado nuestro archivo de objetos.
Esta biblioteca existe.
El problema es que aquí le he dicho al compilador que esta x no está en mí.
Está en otra parte.
Lo define otra persona.
Bueno, obviamente no está definido por otra persona porque eso forzó un poco la cuestión aquí.
Así que ahora el enlazador tiene que resolver que X, Está diciendo, está bien, ¿de dónde saco ese valor para imprimir?
Porque eso es lo que me pediste que hiciera aquí, ¿verdad?
Quiero que imprima el valor de x.
¿Dónde está x?
No lo encuentra.
Ese es el error del enlazador.
Eso es exactamente lo que está pasando.
Y déjame construir esto de nuevo para que puedas ver el mensaje de error una vez más.
Es construirlo y ejecutarlo.
Y ahí está el mensaje de error.
Dice referencia indefinida a X.
Puedes ver exactamente lo que está pasando.
No puede encontrar X.
Esto no es un error del compilador.
Se trata de un error del enlazador.
Es muy importante entenderlo.
Los errores del enlazador son difíciles de solucionar.
Muchas veces faltan los archivos que necesitas enlazar.
Están en los lugares equivocados.
Usted no tiene que preocuparse de que el uso de la luz de código en este curso, básicamente vamos a hacer todo
nosotros mismos.
Pero si estás usando librerías de terceros, este es el tipo de cosas de las que hablaremos en un curso
más intermedio o avanzado.
Pero sólo quería mostrarte los errores del enlazador por si se te ocurre alguno, publícalo en el foro
y lo resolveremos juntos.