2 votes

référence indéfinie à ctor et dctor code simple

Ce simple bout de code me donne vraiment du fil à retordre, alors quelqu'un pourrait-il avoir la gentillesse de m'expliquer ce qui ne va pas ? J'ai un simple fichier cpp qui utilise une classe incluse dans le fichier d'en-tête.

lib.h

namespace tnamespace {    
class base{                                        
    virtual ~base() {};                            
};                                                 
class test/*: public base*/ {                                                                     
    public:                                                                                       

    test();                                                                                       
    test();                                                                                      
};                                                                                                
}  

lib.cxx

#include "lib.h"

namespace tnamespace{                                                                                             
    test::test() {};
    test::~test() {}
}

start.cpp

#include <iostream>
#include <lib.h>

int main() {
    tnamespace::test d;
    return 0;
}

J'utilise gcc version 4.1.2 20080704 et je compile le projet avec

g++ start.cpp -I./ext_lib -Wall

J'ai obtenu l'erreur de liaison suivante

/tmp/ccK2v6GD.o : Dans la fonction `main' :

start.cpp :(.text+0x7a) : référence indéfinie à `tnamespace::test::test()'.

start.cpp :(.text+0x88) : référence indéfinie à `tnamespace::test::~test()'.

collect2 : ld a retourné le statut de sortie 1

J'ai réussi à trouver une solution. J'ai oublié de compiler ma librairie. Commande g++ correcte

g++ start.cpp ext_lib/lib.cxx -I./ext_lib -Wall

2voto

Luchian Grigore Points 136646

Vous n'avez pas compilé lib.cxx pour que les symboles ne soient pas exportés.

g++ start.cpp lib.cxx -I./ext_lib -Wall

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X