IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Liaison impossible : pas creation du fichier exe


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Par défaut Liaison impossible : pas creation du fichier exe
    Bonjour à tous,

    Je n'arrive plus à faire l'édition de de lien de mon projet. Tout marchait correctement, je fais une petite modif dans un fichier, je lance la compilation puis l'exécution et... rien. Le fichier exe n'existe plus, aucune erreur lors de la compilation ou de l'édition de lien mais le fichier exe a disparu et CBB n'arrive pas à le recréer.

    A chaque fois que j'essaye d'exécuter le projet, CBB relance l'édition de lien, n'indique aucune erreur mais l'exécutable n'est pas créé.

    J'ai fermé CBB, rebooté la machine mais rien à faire...

    Quand j'affiche les informations sur le projet, il me dit que le projet n'est pas compilé. J'ai essayé de compiler d'autre projets, cela se passe sans problème.

    J'ai recompilé le même projet à avec gcc : tout fonctionne.

    Si vous avez une idée...

  2. #2
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    C'est très difficile à diagnostiquer mais dans ces cas-là, qui sont rares, une solution consiste à recontruire un nouveau projet à partir de l'ancien par copiés-collés successifs.

    Mais c'est fastidieux pour un projet ample.

    Ce cas arrive quand on introduit du code assembleur sans avoir l'assembleur, l'exe n'est alors pas créé. Mais apparemment, ce n'est pas votre cas puisque vous dites avoir pu compiler précédemment.

    Sinon, si un dysfonctionnement est apparu, cela revient à chercher une aiguille dans une botte de foin.

    Notez que régulièrement vous devriez sauvegarder le répertoire qui contient le projet dans une version acceptable donc compilable.

    À bientôt
    Gilles

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Alfred12
    Tu peu faire l'essai de supprimer les " .obj " et de recompiler parfois ca fonctionne

  4. #4
    Membre très actif
    Inscrit en
    Décembre 2004
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 188
    Par défaut
    J'avais déjà essayer de virer les .obj. Pas de résultats.

    J'ai recréer un projet, ça remarche.......

  5. #5
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Citation Envoyé par Alfred12 Voir le message
    J'ai recréé un projet, ça remarche.......
    Très content pour vous, ça m'est déjà arrivé et je ne me suis pas pris la tête, j'ai procédé ainsi. Pour des projets énormes, ça doit être très dérangeant mais dans des projets assez simples, c'est très efficace.

    Une chose qui manque dans les FAQ, ce sont les manipulations fautives qui mènent à des erreurs difficiles à trouver, comme le refus de compiler.

    Je vous en cite une.

    Partez d’un projet vide, mettez un bouton et cliquez dans l’inspecteur d’objets sur l’événement OnClick. Comme vous le savez, C++ Builder construit pour vous la méthode correspondante et positionne le curseur au début pour que vous écriviez le code correspondant à cet événement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
     
    }
    Si maintenant par erreur, vous effacez de vous-même ces lignes déclaratives, la compilation devient impossible. Vous obtenez ce message.

    [Lieur Erreur] Unresolved external '__fastcall TForm1::Button1Click(System::TObject *)' referenced from D:\PROJETSBCB\P32\UNIT1.OBJ
    En effet, comme avez procédé à une suppression manuelle, la suppression n’est pas complète et la déclaration s’est maintenue dans la classe principale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class TForm1 : public TForm
    {
    __published:	// Composants gérés par l'EDI
       TButton *Button1;
       void __fastcall Button1Click(TObject *Sender);
    private:	// Déclarations de l'utilisateur
    public:		// Déclarations de l'utilisateur
       __fastcall TForm1(TComponent* Owner);
    };
    Ce qu’il faut faire pour s’en sortir, est d’effacer la déclaration de cet événement dans la classe (i.e. supprimer la ligne rouge). Au moment de la compilation, C++ vous fera remarquer que la référence n’existe pas et vous propose de la supprimer définitivement de ses données internes, ce que vous acceptez. À partir de là, tout est rentré dans l’ordre et la compilation refonctionne.

    C’est pourquoi, quand vous avez créé un événement et que finalement, vous n’en voulez pas ou voulez le programmer plus tard, le mieux est de lancer une compilation. C++ Builder, voyant que l’événement est vide de code, le supprime de lui-même avec les références internes, empêchant toute erreur.

    Autre solution : le code que vous avez effacé, vous le recréez à la main puis lancez la compilation qui le supprimera s’il est vide.

    Il existe bien d’autres manipulations fautives dont on ne se rend pas forcément compte, dans votre cas, il est certain que quelque chose s’est passé qui a déstabilisé l’environnement mais vous ne sauriez dire quoi.

    À bientôt
    Gilles

Discussions similaires

  1. Fichier .exe qui s'ouvre avec Shell, mais ne s'exécute pas
    Par choux22 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/12/2010, 15h27
  2. Réponses: 16
    Dernier message: 26/07/2010, 18h02
  3. Réponses: 57
    Dernier message: 13/11/2007, 17h48
  4. Réponses: 1
    Dernier message: 09/10/2007, 06h44
  5. Le 'setup1.exe' utilisé par l'intallation n'est pas celui du fichier cab
    Par PetitB dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 08/12/2006, 01h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo