Maison >développement back-end >C++ >Erreur C++ : échec de la liaison correcte de la fonction, comment y remédier ?

Erreur C++ : échec de la liaison correcte de la fonction, comment y remédier ?

PHPz
PHPzoriginal
2023-08-21 20:45:501125parcourir

Lors de l'écriture de programmes en C++, vous rencontrez parfois le problème de ne pas lier correctement les fonctions. Cela se produit généralement lorsque le compilateur ne trouve pas la définition de la fonction. Lorsque ce problème survient, nous devons y remédier. Ensuite, nous présenterons la définition de la fonction qui ne peut pas être liée correctement et comment la gérer.

1. Échec de la liaison correcte de la définition de la fonction

Échec de la liaison correcte de la fonction, ce qui signifie que le compilateur ne peut pas associer la référence du symbole à la définition du symbole et ne peut pas trouver l'implémentation de la fonction requise. Lors de la compilation, le compilateur vérifiera si la fonction utilisée dans le code a une implémentation. Si aucune implémentation n'est trouvée, il émettra une erreur "symbole non résolu". Ce message d'erreur indique généralement quel fichier et quelle ligne l'erreur s'est produite. Les messages d'erreur courants sont les suivants :

xxx.obj : error LNK2019: unresolved external symbol “symbol” referenced in function “function” 
xxx.exe : fatal error LNK1120: 1 unresolved externals 

Parmi eux, xxx représente le nom du programme, symbol est le nom du symbole qui n'a pas été trouvé et function est le symbole appelé nom de fonction. xxx表示程序名,symbol是未找到的符号名,function是调用该符号的函数名。

二、未能正确链接函数的原因

  1. 缺少库文件

常见的原因是缺少库文件,而库文件中包含了函数的定义。解决方法是添加此库文件路径到项目属性的附加库目录下。

  1. 函数定义与声明不一致

有时候函数的定义与声明不一致,如函数定义为int func(int a),但在调用时发现函数声明为int func(char a)

2. La raison pour laquelle la fonction ne peut pas être liée correctement
  1. Manque de fichiers de bibliothèque

La raison courante est le manque de fichiers de bibliothèque, et les fichiers de bibliothèque contiennent la définition de la fonction. La solution consiste à ajouter ce chemin de fichier de bibliothèque au répertoire de bibliothèque supplémentaire dans les propriétés du projet.
  1. La définition de la fonction est incohérente avec la déclaration

Parfois, la définition de la fonction est incohérente avec la déclaration. Par exemple, la fonction est définie comme int func(int a), mais quand elle l'est. appelé, on constate que la déclaration de fonction est int func(char a). Dans ce cas, la définition et la déclaration doivent être modifiées pour être cohérentes.

    Le nom de la fonction est mal orthographié
Cela peut être dû au fait que le nom de la fonction est mal orthographié et incompatible avec la définition lorsqu'il est appelé, et que le compilateur ne peut pas trouver l'implémentation de la fonction. Vérifiez si le nom de la fonction est correct.

    La fonction n'est pas dans le fichier d'en-tête
Si l'implémentation de la fonction n'est pas dans le fichier d'en-tête, vous devez mettre l'implémentation de la fonction dans le fichier d'en-tête.

3. Solution à l'échec de la liaison correcte des fonctions
  1. Vérifiez les fichiers de bibliothèque

Vérifiez d'abord s'il manque des fichiers de bibliothèque pertinents au programme. Vous pouvez d'abord vous rendre sur le site officiel pour télécharger le fichier de bibliothèque correspondant, puis l'ajouter au répertoire de bibliothèque supplémentaire dans les propriétés du projet. Si le problème ne peut toujours pas être résolu, vous pouvez essayer de réinstaller les fichiers de bibliothèque correspondants.
  1. Vérifiez les définitions et déclarations des fonctions

Assurez-vous que toutes les fonctions sont déclarées et définies correctement. Les définitions de fonctions doivent être cohérentes avec leur déclaration.

Vérifiez l'orthographe du nom de la fonction

🎜🎜Assurez-vous que le nom de la fonction est correctement orthographié et cohérent avec la définition. 🎜🎜🎜Mettez l'implémentation de la fonction dans un fichier d'en-tête🎜🎜🎜Mettez l'implémentation de la fonction dans un fichier d'en-tête et assurez-vous d'inclure le fichier d'en-tête lors de l'appel de la fonction. 🎜🎜Résumé🎜🎜L'incapacité de lier correctement les fonctions entraînera l'échec de la compilation du programme, causant de nombreux désagréments aux programmeurs. Afin d'éviter cette situation, il est nécessaire de faire un bon travail de déclaration de fonction, de définition et de référence des fichiers de bibliothèque. S'il y a un problème pour lequel la fonction ne peut pas être correctement liée, il est préférable de le dépanner et de le résoudre étape par étape, de connaître les raisons spécifiques et de le traiter en conséquence. 🎜

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!

Déclaration:
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