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++ Discussion :

Erreur au link dans un .o


Sujet :

C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut Erreur au link dans un .o
    Bonjour,

    Je travaille avec mingw sous Windows XP.

    J'ai créé une dll base.dll qui contient la déclaration (base.h) et la définition (base.cpp) d'une classe virtuelle MyBase.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #ifndef _MYBASE_
    #define _MYBASE_
     
    namespace NSBase
    {
    	class MyBase
    	{
    	public:
    		MyBase();
    		MyBase(const MyBase & base);
    		MyBase(const int & value);
    		virtual void Echo() = 0;
     
    	protected:
    		int value;
    	};
    };
     
    #endif
    Ensuite je voudrais créér une seconde dll derived.dll qui contient la déclaration (derived.h) et la définition (derived.cpp) d'une classe MyDerived qui hérite de MyBase. J'ai donc juste fait un include de base.h dans derived.h.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #ifndef _MYDERIVED_
    #define _MYDERIVED_
     
    #include "base.h"
     
    namespace NSDerived
    {
    	class MyDerived : public NSBase::MyBase
    	{
    	public:
    		MyDerived();
    		MyDerived(const MyDerived & derived);
    		MyDerived(const int & value);
    		void Echo();
    	};
    };
     
    #endif
    Et ça marche. Dans les 2 cas je passe par un .o temporaire avant de faire le .dll. Et pour derived.dll, je lie directement avec base.dll.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -shared -o derived.dll derived.o base.dll
    J'ai mis un zip avec tout le code en pièce jointe.

    En fait ça c'est que j'essaie de faire sur un programme plus conséquent. Et là ça marche pas et je comprends pas. Si je fait le rapprochement avec le programme test, le link me sort une erreur qui correspondrait à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    derived.o:  dans la fonction MyDerived() :
    derived.cpp:6:référence indéfinie vers NSBase::MyBase()
    derived.cpp:14:référence indéfinie vers NSBase::MyBase(NSBase::MyBase const &)
    Pareil pour le destructeur et le constructeur par copie. Pourtant, j'ai vérifié tout. Je fais bien l'édition des liens avec la bonne dll au bon endroit tout ça. Cela donne l'impression que base.dll (pour rester dans le parallèle) ne contient pas la définition de MyBase.

    Je sais bien que si je vous donne pas le code qui pose problème vous pouvez pas m'aider. Cependant est-ce que vous avez déjà eu ce cas. J'ai vu sur des forums qu'il fallait respecter l'ordre des dépendances (ce que je fait). Il y a peut-être autre chose de ce type qui fait que ça compile pas.

    Merci.

    Flo.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. template dans header mais erreur au link
    Par ctxnop dans le forum Langage
    Réponses: 1
    Dernier message: 11/12/2013, 15h20
  2. [Lazarus] Erreur édition des liens (linking) dans programme d'essais mysql
    Par over_score dans le forum Lazarus
    Réponses: 1
    Dernier message: 13/07/2009, 10h51
  3. erreur de link(age) g++
    Par corwin dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 05/05/2004, 11h33
  4. [wxWindows] Erreur de link pour ODBC
    Par ovh dans le forum wxWidgets
    Réponses: 3
    Dernier message: 28/01/2004, 15h38
  5. DirectDrawCreate erreur de link
    Par Ing_Ben dans le forum DirectX
    Réponses: 1
    Dernier message: 01/12/2002, 18h46

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