FAQ C++ BuilderConsultez toutes les FAQ

Nombre d'auteurs : 60, nombre de questions : 670, dernière mise à jour : 21 novembre 2010  Ajouter une question

 

Cette F.A.Q. a été réalisée à partir des questions fréquemment posées sur le forum C++ Builder de developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette F.A.Q. ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette F.A.Q. ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez devenir rédacteur, contactez pottiez

Nous espérons que cette F.A.Q. saura répondre à un maximum de vos questions. Nous vous souhaitons une bonne lecture.

L'équipe C++ Builder de Developpez.

Commentez cette FAQ : Commentez


SommaireLangageCompilation et édition de liensComment résoudre l'erreur... (5)
précédent sommaire suivant
 

Cette erreur se produit quand vous appelez une fonction dont vous avez bien inclus le fichier entête la déclarant, mais dont le lieur ne trouve pas son implémentation.

Une cause possible est que cette fonction provient soit d'une librairie (.lib) ou d'un fichier source (.cpp) et que vous avez omis de l'ajouter au projet.
Dans ce cas, la solution est d'ajouter la librairie ou le fichier source au projet (via le menu Projet | Ajouter au projet...)

Il peut également arriver que l'erreur se produise même si le .lib est bien ajouté au projet. En ce cas, il s'agit probablement d'une librairie que vous avez développée, et dans laquelle vous venez d'apporter des modifications.
Une solution peut alors être de supprimer tous les fichiers temporaires (.obj, .tds, .~, les .lib et .bpl s'ils existent), et de reconstruire la librairie (la recompilation ne suffit pas).

Mis à jour le 31 janvier 2005 CGi Neo41

Une cause possible de cette erreur est que vous avez effacé complètement la définition de la méthode de l'évènement (Button1Click par exemple), créée automatiquement par l'EDI, alors que sa déclaration est toujours dans le header (.h)

Dans ce cas, la solution est d'effacer la déclaration de la méthode en question.

A l'avenir, si vous voulez supprimer une méthode liée à un évènement, supprimez seulement le contenu de la définition, l'EDI fera les suppressions nécessaires à la prochaine compilation.

Mis à jour le 31 janvier 2005 CGi

La cause probable de cette erreur est que le programme que vous essayez de compiler, construire ou exécuter est déjà en cours d'exécution.
La solution est simple : fermer l'instance du programme en cours d'exécution.

A partir de Windows Vista cette erreur peut apparaître si vous n'executez pas C++Builder en tant qu'Administrateur.

Mis à jour le 31 janvier 2005 CGi pottiez

Une cause possible est que vous avez ajouté une méthode personnelle à une fiche(TForm) ou à une autre classe.
Vous l'avez donc déclarée dans l'entête de la classe (prenons TForm1 par exemple)

Code c++ : Sélectionner tout
1
2
private:   // Déclarations de l'utilisateur 
   void __fastcall MaMethode();
Le problème est que dans la définition de la méthode vous avez omis son appartenance à la classe (TForm1:: dans notre example)

Code c++ : Sélectionner tout
1
2
3
4
void __fastcall MaMethode() 
{ 
   ShowMessage("Execution de MaMethode"); 
}
Elle est donc définie comme une fonction indépendante et non comme une fonction membre. Cette erreur est assez fréquente, mais comme le code est valide on n'obtient qu'une erreur de l'éditeur de lien.
Dans ce cas, la solution est de rajouter le nom de la classe devant la méthode (TForm1:: dans notre exemple).

Code c++ : Sélectionner tout
1
2
3
4
void __fastcall TForm1::MaMethode() 
{ 
   ShowMessage("Execution de MaMethode"); 
}

Mis à jour le 31 janvier 2005 CGi

Cette erreur provient du fait que C++ Builder référence systématiquement dans le fichier projet tous les paquets dont il dispose, même s'ils ne sont pas nécessaires à ce projet. Cela peut poser des problèmes lors de la désinstallation de paquets, ou de la récupération de projets provenant d'une source externe.

Pour résoudre ce problème, deux solutions sont possibles (même procédure à suivre pour les deux types de fichiers) :

La première (N.B. : avant d'essayer cette solution il est conseillé de faire une copie du fichier projet.bpr)

  • Fermer le projet concerné
  • Ouvrir le fichier projet.bpr avec un éditeur de texte
  • Supprimer toutes les occurrences de 'XXX.LIB'
  • Sauvegarder le fichier
  • Réouvrir le projet

La deuxième:

  • Ouvrir le projet concerné
  • Faire un click doit sur le nom du projet et ensuite choisir "Modifier la source des options" pour afficher le fichier xml
  • Chercher toutes les occurrences de 'XXX.LIB' et les supprimer
  • Sauvegarder le projet SANS LE FERMER
  • Retirer un fichier de la liste des fichiers du projet (peu importe lequel)
  • Sauvegarder le projet et fermer C++ Builder
  • Réouvrir le projet
  • Rajouter le fichier retiré auparavant
  • Compiler

Mis à jour le 31 janvier 2005 Neo41

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2020 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.