Dans cette vidéo, nous parlerons des erreurs de l'éditeur de liens et des raisons pour lesquelles elles peuvent se produire.
Les erreurs de l'éditeur de liens se produisent lorsque l'éditeur de liens essaie d'assembler tous les éléments d'un programme
pour créer un exécutable et qu'un ou plusieurs éléments sont manquants.
Typiquement, cela peut se produire lorsqu'un fichier objet ou des bibliothèques ne peuvent pas être trouvés par l'éditeur de liens.
La correction des erreurs de l'éditeur de liens peut s'avérer délicate.
Parfois, il s'agit simplement d'obtenir des chemins corrects afin que l'éditeur de liens sache où se trouvent
les pièces manquantes.
Passons à code light et forçons un programme à avoir une erreur de linker pour que vous puissiez voir à quoi ressemble
le message d'erreur.
Le code d'exemple est ici, veuillez ignorer la syntaxe.
Il s'agit en fait d'un code C plus plus, mais il est toujours pertinent pour les erreurs de l'éditeur de liens.
Ne vous inquiétez pas pour le flux d'information.
Ne vous inquiétez pas pour le stdcout.
L'idée principale est que les erreurs de liaison sont les mêmes en C et en C plus plus.
Et l'exemple de codage ici essaie juste de démontrer une fois de plus une erreur d'éditeur de liens.
Je suis donc dans code light et j'ai créé un projet appelé Linker Error basé sur le modèle que nous utilisons.
Je n'ai donc qu'une Main. cpp qui dit Hello world.
Maintenant, nous allons forcer une erreur de l'éditeur de liens ici.
Ce n'est pas quelque chose que vous voulez faire normalement, mais je veux le faire pour vous montrer à quoi ressemble
l'erreur.
Je vais donc dire extern int c ou disons simplement X et je vais vous expliquer tout cela
dans une seconde.
Ensuite, dans le corps du texte principal, je veux essayer d'utiliser ce X juste là.
C'est juste un nombre entier et disons que je veux l'imprimer.
Je veux juste imprimer X, c'est aussi simple que cela.
Je vais le conserver.
Maintenant, si je compile ce programme, vous allez voir ce qui se passe.
Je vais faire un clic droit sur compiler.
J'obtiens une compilation correcte.
Il n'y a aucun problème avec le programme, mais lorsque j'essaie de le construire et de l'exécuter.
Vous pouvez voir l'erreur de l'éditeur de liens.
Il s'agit d'une erreur classique de l'éditeur de liens.
Référence non définie à quelque chose.
Dans le cas présent, il s'agit de x.
Vous remarquerez également que l'éditeur de liens a renvoyé un ici.
LD renvoie un, qui est l'état de sortie.
Il y avait donc un problème avec le lien.
Il est évident que le compilateur fonctionne bien car nous n'avons pas eu d'erreurs de compilation.
Nous recommençons.
Il y a la compilation.
Aucune erreur, aucun avertissement.
Laissez-moi donc vous expliquer ce qui se passe ici.
Permettez-moi d'attraper rapidement mon stylet.
Ce qui se passe ici, c'est que j'ai mon fichier CPP principal et qu'il va être compilé en main dot zero, disons,
ou main dot object.
Nous avons ici une référence à un EXE.
Vous pouvez le voir ici.
J'ai donc ici une référence à un exe, que je vais utiliser.
Maintenant, nous avons aussi nos bibliothèques O stream, donc l'éditeur de liens doit récupérer ces bibliothèques et je vais juste taper
i o stream ici pour que vous sachiez de quoi je parle.
L'éditeur de liens doit assembler ces deux éléments pour créer mon exe principal.
Ou dans ce cas, je pense qu'il s'agit d'une erreur de linker exe.
Mais vous voyez ce que je veux dire.
La compilation est donc correcte.
Nous avons créé notre fichier objet.
Cette bibliothèque existe.
Le problème est que j'ai dit au compilateur que ce x n'est pas en moi.
C'est ailleurs.
Elle est définie par quelqu'un d'autre.
Il est évident qu'elle n'est pas définie par quelqu'un d'autre, car c'est en quelque sorte le problème qui se pose ici.
L'éditeur de liens doit donc maintenant résoudre ce X, en se demandant où je peux obtenir cette valeur pour l'imprimer.
Parce que c'est ce que vous m'avez demandé de faire ici, n'est-ce pas ?
Je veux qu'il imprime la valeur de x.
Où se trouve x ?
Il ne le trouve pas.
C'est l'erreur de l'éditeur de liens.
C'est exactement ce qui se passe.
Permettez-moi de reconstruire le système pour que vous puissiez voir le message d'erreur une fois de plus.
Il s'agit de le construire et de le faire fonctionner.
Et voilà le message d'erreur.
Il indique une référence non définie à X.
Vous pouvez voir exactement ce qui se passe.
Il ne trouve pas X.
Il ne s'agit pas d'une erreur de compilation.
Il s'agit d'une erreur de l'éditeur de liens.
Il est très important de le comprendre.
Les erreurs d'éditeur de liens sont difficiles à corriger.
Souvent, les fichiers que vous devez relier sont manquants.
Ils sont au mauvais endroit.
Vous n'avez pas à vous soucier de cela en utilisant le code light dans ce cours, nous allons pratiquement tout
faire nous-mêmes.
Mais si vous utilisez des bibliothèques de tiers, c'est le genre de choses dont nous parlerons dans un cours plus
intermédiaire ou avancé.
Mais je voulais juste vous montrer les erreurs du linker au cas où vous en trouveriez une, postez-la dans le forum
et nous la traiterons ensemble.