Compilation séparée : ne veut pas linker

toto -  
ThyB45 Messages postés 10 Statut Membre -
Bonjour,

Tout d'abord, désolé si la réponse a déjà été apportée, en tout cas, je l'ai pas trouvée...

Voila, j'essaie de compiler un projet que je dois rendre, mais pas moyen d'y arriver.
Quand je mets tout dans un fichier main.cpp, ça marche très bien.

Par contre, là, je dois rendre un fichier différent pour chaque classe (classe.cpp + classe.hpp), et un fichier supplémentaire pour l'espace global (structures, variables globales, définition de variable statiques).
Et bien sûr, cette fois, le linker ne veut pas faire son boulot !

main(ligne) : undefined reference to 'Maclasse::Maclasse'
ld a retourné 1 code d'état d'exécution


Mais, à chaque fois que je cherche comment régler ça, je tombe sur "sous devc++ / code::blocks / visual studio, faites clic droit -> ajouter un fichier..."
IDE ? C'est quoi un IDE ? Mon seul IDE, c'est l'ensemble VIM + GCC + VALGRIND, donc les "sous l'IDE toto" ne me sont d'aucune utilité...

Comment faire pour que g++ arrive à compiler correctement mon programme ???

Merci, et bonne nuit.

3 réponses

ThyB45 Messages postés 10 Statut Membre
 
Hm les problème de linkage, c'est en générale quand c'est déclaré dans le .hpp et que ce n'est pas défini dans le .cpp.

Résumé de comment faire en fichier séparé :
Dans le maclass.hpp
#ifndef MACLASS_HPP //Pour être sure que ton fichier soit inclus qu'une fois    
#define MACLASS_HPP 

#include <iostream>    
#include "global.hpp" //pour ton fichier global    

class MaClass    
{    
public:   
    MaClass();    
    void MaMethode();    
};    

#endif


et dans ton maclass.cpp
#include "maclass.hpp"    

MaClass::MaClass()    
{    
  //blabla    
}    

void    
MaClass::MaMethode()    
{    
  //blabla    
}


j'espère que ça répond à ta question :x
0
toto
 
Merci, mais ça ne marche pas mieux...
J'avais oublié de faire #include "global.hpp" dans maclass.hpp, mais même comme ça, ça ne change rien...
0
ThyB45 Messages postés 10 Statut Membre
 
tu compile bien les .cpp uniquement ?
g++ maclass.cpp -o monProgramme

et pas mettre les .hpp dans la ligne de commande
0