Maison > développement back-end > C++ > Pourquoi est-ce que j'obtiens des erreurs « Référence non définie à » lors de la liaison d'une bibliothèque C statique avec du code C ?

Pourquoi est-ce que j'obtiens des erreurs « Référence non définie à » lors de la liaison d'une bibliothèque C statique avec du code C ?

Patricia Arquette
Libérer: 2024-12-07 09:54:13
original
589 Les gens l'ont consulté

Why Do I Get

Gestion des erreurs « Référence non définie à » lors de la liaison d'une bibliothèque C statique avec du code C

Lorsque vous essayez de lier une bibliothèque C statique avec du code C, il est courant de rencontrer " référence non définie aux « erreurs ». Ces erreurs surviennent même après avoir ajusté l’ordre des fichiers objets et lié les indicateurs. Cependant, ce problème est exclusif à la liaison C, car d'autres programmes C utilisant la même bibliothèque ne rencontrent pas ces erreurs.

La cause profonde : la manipulation de noms

La distinction clé entre la compilation C et C est un nom mutilé. Les programmeurs C peuvent utiliser librement les noms de fonctions tels qu'ils sont déclarés, tandis que C modifie les noms des fonctions, des classes et des modèles pour éviter les conflits de noms lors de la compilation de plusieurs fichiers sources.

Lors de la liaison d'une bibliothèque C statique avec du code C, l'éditeur de liens attend les noms de symboles mutilés comme références. Cependant, la bibliothèque C fournit des symboles non mutilés, conduisant aux erreurs "référence non définie à".

La solution : supprimer la modification du nom

Pour résoudre ces erreurs, le bloc externe "C" peut être utilisé pour supprimer la modification du nom C pour une portée spécifique, enfermant les déclarations de fonction qui interagissent avec la bibliothèque C. Ce faisant, l'éditeur de liens reconnaîtra les références non mutilées et liera avec succès la bibliothèque.

Une autre approche efficace consiste à envelopper les déclarations de fonction dans un fichier d'en-tête avec des directives de préprocesseur qui compilent conditionnellement selon que la compilation est C ou C. Cette approche garantit que les noms de fonctions corrects sont utilisés en fonction du contexte de compilation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal