Neste vídeo, falaremos sobre os erros do vinculador e por que eles podem ocorrer.
Os erros do vinculador ocorrem quando o vinculador está tentando juntar todas as partes de um programa
para criar um executável e uma ou mais partes estão faltando.
Normalmente, isso pode ocorrer quando um arquivo de objeto ou bibliotecas não pode ser encontrado pelo vinculador.
A correção de erros do vinculador pode ser complicada.
Às vezes, é apenas uma questão de obter os caminhos corretos para que o vinculador saiba onde estão
as peças que faltam.
Vamos para a luz de código e forçaremos um programa a ter um erro de vinculador para que você possa ver
como é a mensagem de erro.
O código de exemplo aqui, ignore a sintaxe.
Na verdade, esse é um código C plus plus, mas ainda é relevante para os erros do vinculador.
Não se preocupe com o i o stream.
Não se preocupe com o stdcout.
A ideia principal aqui é que os erros de link são os mesmos em C e C plus plus.
E o exemplo de codificação aqui está apenas tentando demonstrar novamente um erro de vinculador.
Então, estou no Code Light e criei um projeto chamado Linker Error com base no modelo que usamos.
Portanto, tudo o que tenho é um Main. cpp que diz Hello world.
Agora vamos forçar um erro de vinculador aqui.
Isso não é algo que você queira fazer normalmente, mas quero fazer isso para mostrar a você como
é o erro.
Então, o que vou dizer é extern int c ou vamos dizer apenas X e explicarei tudo isso a você em
apenas um segundo.
E depois, no corpo da mensagem principal, quero tentar usar esse X bem aqui.
É apenas um número inteiro e digamos que eu queira imprimi-lo.
Eu só quero imprimir o X, simples assim.
Vou guardar isso.
Agora, se eu compilar esse programa, você verá o que acontece.
Vou clicar com o botão direito do mouse em compilar.
Obtenho uma compilação limpa.
Não há nada de errado com o programa, mas quando tento construí-lo e executá-lo.
Você pode ver o erro do vinculador.
Esse é um erro clássico do vinculador.
Referência indefinida a algo.
Nesse caso, é simplesmente x.
Além disso, você notará que o vinculador retornou um aqui.
LD retorna um, que é o status de saída.
Portanto, havia algo errado com o link.
Obviamente, o compilador estava funcionando bem, pois não recebemos nenhum erro de compilação.
Vamos fazer isso novamente.
Há a compilação.
Sem erros, sem avisos.
Então, deixe-me explicar o que está acontecendo aqui.
Deixe-me pegar minha caneta stylus aqui rapidamente.
E o que está acontecendo aqui é que tenho meu arquivo CPP principal e ele será compilado para o ponto principal zero, digamos,
ou objeto principal.
Aqui temos uma referência a um EXE.
Você pode ver isso bem ali.
Então, aqui eu tenho uma referência a um exe, que vou usar.
Agora também temos nossas bibliotecas de fluxo O, portanto, o vinculador precisa pegar essas bibliotecas e vou digitar i o stream
aqui para que você saiba do que estou falando.
O vinculador precisa juntar esses dois componentes para criar meu exe principal.
Ou, nesse caso, acredito que seja um erro do linker exe.
Mas você sabe o que quero dizer.
Portanto, a compilação está correta.
Criamos nosso arquivo de objeto.
Essa biblioteca existe.
O problema é que eu disse ao compilador aqui que esse x não está em mim.
Está em outro lugar.
Ele é definido por outra pessoa.
Bem, obviamente não é definido por outra pessoa, porque isso meio que forçou a questão aqui.
Então, agora o vinculador precisa resolver esse X. Ele está dizendo: "Tudo bem, onde posso obter esse valor para imprimir?
Porque foi isso que você me pediu para fazer aqui, certo?
Quero que ele imprima o valor de x.
Onde onde está x?
Ele não consegue encontrá-la.
Esse é o erro do vinculador.
É exatamente isso que está acontecendo.
E deixe-me construir isso novamente para que você possa ver a mensagem de erro mais uma vez.
É construir e executar.
E há uma mensagem de erro.
Está dizendo referência indefinida a X.
Você pode ver exatamente o que está acontecendo.
Ele não consegue encontrar o X.
Isso não é um erro do compilador.
Esse é um erro do vinculador.
É muito importante entender isso.
Os erros do vinculador são difíceis de corrigir.
Muitas vezes, os arquivos que você precisa vincular estão faltando.
Eles estão nos lugares errados.
Você não precisa se preocupar com isso usando a luz de código neste curso, pois basicamente faremos
tudo sozinhos.
Mas se você estiver usando bibliotecas de terceiros, esse é o tipo de assunto sobre o qual falaremos em um curso mais
intermediário ou avançado.
Mas eu só queria mostrar os erros do vinculador, caso você encontre algum, publique-o no fórum e
nós trabalharemos juntos.