Découpe d'un programme c++ - C++ - Programmation
Marsh Posté le 13-11-2015 à 12:38:20
ben tu compiles pas somme.cpp avec ta ligne de commande, donc pas étonnant que le linker râle.
sous g++ je ferais
g++ -Wall -o fonction.exe fonction.cpp somme.cpp
A+,
Marsh Posté le 13-11-2015 à 19:50:06
Effectivement, même en essayant de préalablement compilé somme.cpp, ça ne marche pas. Toutefois avec codeblocks ça fonctionne, Merci en tout les cas
Marsh Posté le 13-11-2015 à 20:48:45
Si tu veux compiler un a un:
g++ -Wall -c somme.cpp
g++ -Wall -c fonction.cpp
g++ -Wall -o fonction.exe fonction.o somme.o
Ou un mix des deux:
g++ -Wall -c somme.cpp
g++ -Wall -o fonction.exe fonction.cpp somme.o
De toute façon, dans la phase finale, au moment du link, on va linker fonction.o et somme.o (qui auront été créés, de manière explicite, ou implicite) pour générer l'exécutable.
La seule différence entre la première et la seconde méthode ci-dessus, c'est que dans la première je demande de façon explicite de compiler somme.cpp et fonction.cpp comme modules objets (.o) et ils seront encore la après la phase de link et la génération de l'exécutable, tandis que dans la seconde, je demande de façon explicite de compiler somme.cpp comme module objet et de façon implicite (et donc temporaire) pour fonction.cpp, et après la phase de link et la génération de l'exécutable, somme.o sera encore la, mais fonction.o aura été effacé.
A+,
Marsh Posté le 13-11-2015 à 21:22:13
ça fonctionne ! en fait je croyais que j'avais que c++ comme compilateur (ce que le prof a dit) ça marche egalement avec g++.
Thanks
Marsh Posté le 13-11-2015 à 00:57:52
Bonsoir,
donc j'ai trois fichiers fonction.cpp somme.cpp & somme.h
fonction.cpp
#include<iostream>
#include<fstream>
#include"somme.h"
using namespace std;
int main(void){
int a=5,b=3;
int c=sommedexety(a,b);
cout << "somme = " << c << endl;
return 0;
}
somme.cpp
#include"somme.h"
int sommedexety(int a,int b) {
return a+b;
}
somme.h
#ifndef SOMME_H_INCLUDED
#define SOMME_H_INCLUDED
int sommedexety(int a,int b);
#endif // SOMME_H_INCLUDED
lorsque je compile avec " c++ -Wall -Wextra fonction.cpp -o fonction " c'est peut etre pas la bonne syntaxe mais j'obtiens comme message d'erreur
/tmp/ccsC70X1.o: dans la fonction <<main>>:
fonction.cpp.text+0x29): référence indéfinie vers <<sommedexety(int, int)>>
collect2: error: ld returned 1 exit status
sachant que je bosse sur une VirtualBox installée sur une clé.
Merci pour votre aide