Problèmes compilation projets ?? [Résolu]

Signaler
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
7 mars 2012
-
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
7 mars 2012
-
Bonjour,

j'ai un problème avec un projet... J'ai essayé de simplifier le problème au maximum avant de le poser et voilà ce que ça donne :

On crée un projet "classe" avec 1 fichier "classe.h" dans un dossier "classe" :

// classe.h
#ifndef CLASSE_H
#define CLASSE_H

#include <math.h>

class classe
{
private :
    double num;
public :
// Ca marche (pas de classe.cpp dans le projet)
    classe(double val) {num = val;};
    ~classe() {};
    double getRacine() {return sqrt(num);};
};

#endif

On crée un autre projet : "testClasse" avec 1 fichier "testClasse.cpp" dans le dossier "testClasse" :

// testClasse.cpp
#include "..\classe\classe.h"

int main()
{
    classe * test = new classe(10);
    double d = test->getRacine();
    delete test;
    return 0;
}

On compile les projets... ça marche, c'est magnifique

Modifions un petit peu le projet "classe" : ajout d'un fichier "classe.cpp"
Ce qui nous donne :

// classe.h
#ifndef CLASSE_H
#define CLASSE_H

#include <math.h>

class classe
{
private :
    double num;
public :
// Ca ne marche pas : classe.cpp ajouté au projet
    classe(double val);
    ~classe();
    double getRacine();
};

#endif

// classe.cpp
#include "classe.h"   

double calcRacine(double val);

classe::classe(double val) {num = val;}
classe::~classe() {}
double classe::getRacine() {return sqrt(num);}

void main(void){}

On compile "classe" -> OK
On compile "testClasse" -> Erreurs...
testClasse.obj : error LNK2019: symbole externe non résolu "public: __thiscall classe::~classe(void)" (??1classe@@QAE@XZ) référencé dans la fonction "public: void * __thiscall classe::`scalar deleting destructor'(unsigned int)" (??_Gclasse@@QAEPAXI@Z)

testClasse.obj : error LNK2019: symbole externe non résolu "public: double __thiscall classe::getRacine(void)" (?getRacine@classe@@QAENXZ) référencé dans la fonction _main

testClasse.obj : error LNK2019: symbole externe non résolu "public: __thiscall classe::classe(double)" (??0classe@@QAE@N@Z) référencé dans la fonction _main

Merci pour votre aide

A+

4 réponses

Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
Enleve cette fonction, main et essaye de compiler directemen ton fichier main un projet

++
Messages postés
987
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
30 août 2012
18
#include "classe.h"   

double calcRacine(double val);

classe::classe(double val) {num = val;}
classe::~classe() {}
double classe::getRacine() {return sqrt(num);}

void main(void){}  <- c'est une erreur de copier coller ?

++
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
7 mars 2012

non, c'est juste que si tu ne met pas de main, il compile pas parce qu'il ne trouve pas la fonction "main", donc je lui en met une pour lui faire plaisir. Quand je met tout dans "classe.h" il ne demande pas de "main"...

A+
Messages postés
206
Date d'inscription
samedi 29 octobre 2005
Statut
Membre
Dernière intervention
7 mars 2012

Salut,

merci tu m'a ouvert les yeux... Je savais que c'était tout con... Il ne faut pas faire 2 projets mais un seul qui contient les 3 fichiers...

A+