Éditeurs de liens, chargeurs et exécutables
Lors de l'édition de liens d'un programme C, l'erreur « undefined reference to `foo' » (référence non définie à foo) apparaît. Quelle est la cause la plus probable ?
- Afoo contient une erreur de syntaxe
- Bfoo est défini dans deux fichiers
- Cfoo est appelé, mais le fichier ou la bibliothèque qui définit son contenu n'est pas inclus dans l'édition de liens
Afficher la réponse et l'explication
Réponse : C. foo est appelé, mais le fichier ou la bibliothèque qui définit son contenu n'est pas inclus dans l'édition de liens
Si la fonction est déclarée dans un fichier d'en-tête, la compilation réussit. Mais si, lors de l'édition de liens, le fichier objet ou la bibliothèque définissant foo est introuvable, l'adresse à placer dans l'instruction d'appel ne peut être fixée, d'où cette erreur. Les causes fréquentes sont l'oubli de lier le fichier de définition, l'oubli de spécifier une bibliothèque (-lm, etc.), ou une différence d'orthographe ou d'arguments qui produit un autre nom.
Continuer : 9 autres questions sur Éditeurs de liens, chargeurs et exécutables