Bonjour,
J'ai une erreur à la compilation de mon programme et je n'arrive pas à trouver des explications sur la manière de compiler un fichier *.cpp qui charge plusieurs fichiers d'en-têtes *.h (avec #include "fichier1.h" etc.).
Est-ce que vous pourvez me donner la ligne de commande pour compiler cette ensemble de fichiers ci-dessous, parce que g++ main_prog.cpp -o main_prog provoque cette erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
main_prog.cpp: (.text+0x24df): undefined reference to `prog1(double, double, short*, short*)'
main_prog.cpp: (.text+0x2854): undefined reference to `prog2(std::basic_string<char,...)
main_prog.cpp: (.text+0x3c76): undefined reference to `prog1(double, double, short*, short*)'
main_prog.cpp: (.text+0x3fe5): undefined reference to `prog2(std::basic_string<char,...)
collect2: ld a retourné 1 code d'état d'exécution
prog1.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
#ifndef prog1_h
#define prog1_h
/* function prototype */
int prog1(double a, double b, short *c, short *d);
#endif
prog1.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int prog1(double a, double b, short *c, short *d)
{
etc.
}
prog2.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#ifndef prog2_h
#define prog2_h
/* function prototype */
#include<string>
void prog2(std::string file, ...);
#endif
prog2.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <sstream>
#include <string>
#include <stdlib.h>
#include <vector>
using namespace std;
void prog2(std::string file, ...)
{
etc.
}
main_prog.cpp :
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
20
#include <iostream>
#include <string>
#include <fstream>
#include <new>
#include <iomanip>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <sstream>
#include "prog1.h"
#include "prog2.h"
using namespace std;
int main(int argc, char *argv[])
{
etc.
  prog1(w,x,&y,&z);
etc.
  prog2(file, etc.);
  return 0;
}
Compilation :
g++ -c prog1.cpp --> Pas d'erreur à la compilation
g++ -c prog2.cpp --> Pas d'erreur à la compilation
g++ -c main_prog.cpp --> Erreurs listées ci-dessus