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

Autres éditeurs Discussion :

Problème de link avec Borland C++ 5.5


Sujet :

Autres éditeurs

  1. #1
    Membre régulier Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 74
    Points
    74
    Par défaut Problème de link avec Borland C++ 5.5
    Je suis en train de préparer une petite présentation concenant les namespace's et pour illustrer mon propos j'ai préparé les fichiers suivants :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Fichier : tstMod.cpp
    #include <iostream>
    using namespace std ;
    #include "modA.h"
    #include "modB.h"
    int main( )
    {
    	procedure() ;
    	return 0 ; 
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Fichier : modA.h
    #ifndef MODA_H
    #define MODA_H
    #include <iostream>
    using namespace std ;
    void procedure() ;
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Fichier : modA.cpp
    #include "modA.h"
    void procedure()
    {
    	cout << "ModulA" << endl ;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Fichier : modB.h
    #ifndef MODB_H
    #define MODB_H
    #include <iostream>
    using namespace std ;
    void procedure() ;
    #endif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Fichier : modB.cpp
    #include "modB.h"
    void procedure()
    {
    	cout << "ModulB" << endl ;
    }
    Ceci a pour but de mettre en évidence un clash de nom. Les deux modules exportent deux fonctions de même signature.
    Malheureusement le linker (ilink32) de Borland ne râle pas... Il prend simplement la procédure qui se trouve dans le premier module donné sur la ligne de compilation.
    J'ai testé ce code avec VC et GPP et tous deux envoient une erreur.

    J'ai compilé avec l'instruction suivante :
    bcc32 tstmod.cpp moda.cpp modb.cpp

    Aurais-je oublié une option ou est-ce un bug ?

    Merci

    PS.
    J'ai le même problème avec Builder 5
    Avez-vous remarqué les progrès que fait l'ignorance?
    [Tristan Bernard ]

  2. #2
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    procédez en 3 étapes

    bcc32 -c modA.cpp // pour créer modA.obj

    bcc32 -c modB.cpp // pour créer modB.obj

    bcc32 -otestmod testmod.cpp modA.obj modB.obj

  3. #3
    Membre régulier Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 74
    Points
    74
    Par défaut
    Merci beaucoup pour la réponse.
    En effet ça marche mais je ne comprend pas pourquoi le fait de nommer l'OBJ avec l'option -o change le comportement du linker ???
    Même ainsi
    bcc32 -c modA.cpp
    bcc32 -c modB.cpp
    bcc32 -c tstMod.cpp
    bcc32 -otstMod tstMod.obj modA.obj modB.obj

    J'ai un résultat correct alors que le -o ne devrait rien faire dans ce cas...
    Avez-vous remarqué les progrès que fait l'ignorance?
    [Tristan Bernard ]

  4. #4
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    -o ne nomme pas le .obj mais le .exe

    bcc32 -otestmod.exe testmod.cpp modA.obj modB.obj

    aurait été plus explicite

  5. #5
    Membre régulier Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 74
    Points
    74
    Par défaut
    Je suis particulièrement borné mais l'aide borland dit :
    -exxx Executable file name
    -oxxx Object file name
    L'effet de cette option dépendrait-elle du contexte ?

    En tous les cas merci de votre patience.
    Avez-vous remarqué les progrès que fait l'ignorance?
    [Tristan Bernard ]

  6. #6
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    sur le -o, je me suis peut-être mélangé les crayons avec le compilateur
    MinGW

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de link avec winsock2.h
    Par sebh dans le forum Windows
    Réponses: 5
    Dernier message: 25/04/2008, 11h01
  2. Réponses: 2
    Dernier message: 15/03/2007, 12h10
  3. problème de link avec visual C++ 2005
    Par superC dans le forum OpenGL
    Réponses: 2
    Dernier message: 27/02/2007, 10h35
  4. [Code::Blocks] problème de link avec DevIL
    Par theidiot dans le forum DevIL
    Réponses: 4
    Dernier message: 01/10/2006, 18h26
  5. Problème de compilation avec Borland : Direct Draw
    Par Burckel dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 26/09/2005, 18h17

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