IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Langage > Compilation et édition de liens > Comment résoudre l'erreur...
        [Lieur Erreur] Unresolved external 'UneFonction()' referenced from XXX.OBJ ?
        [Lieur Erreur] Unresolved external '__fastcall TForm1::UnGestionnaireDEvenement(...)' referenced from XXX.OBJ ?
        [Lieur Erreur fatale] Fatal: Could not open XXX.exe (program still running?) ?
        [Lieur Erreur] Unresolved external '__fastcall TXXX::MaMethode(...)' referenced from XXX.OBJ ?
        [Lieur Erreur fatale] Fatal : Unable to open file 'XXX.LIB' ou 'XXX.BPI' ?



[Lieur Erreur] Unresolved external 'UneFonction()' referenced from XXX.OBJ ?
Créé le 31/01/2005[haut]
auteurs : CGi, Neo41
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).


[Lieur Erreur] Unresolved external '__fastcall TForm1::UnGestionnaireDEvenement(...)' referenced from XXX.OBJ ?
Créé le 31/01/2005[haut]
auteur : CGi
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.


[Lieur Erreur fatale] Fatal: Could not open XXX.exe (program still running?) ?
Mise à jour le 22/11/2010[haut]
auteurs : CGi, pottiez
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.

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

[Lieur Erreur] Unresolved external '__fastcall TXXX::MaMethode(...)' referenced from XXX.OBJ ?
Créé le 31/01/2005[haut]
auteur : CGi
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)

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)

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).

void __fastcall TForm1::MaMethode()
{
   ShowMessage("Execution de MaMethode");
}

[Lieur Erreur fatale] Fatal : Unable to open file 'XXX.LIB' ou 'XXX.BPI' ?
Créé le 31/01/2005[haut]
auteur : Neo41
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



Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

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 © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.