[C++] Découpe d'un programme en plusieurs fichiers

Découpe d'un programme en plusieurs fichiers [C++] - C++ - Programmation

Marsh Posté le 25-11-2003 à 11:11:29    

Bon voilà, je n'arrive pas à découper mon programme en plusieurs fichiers.
 
Je dois en avoir 3 :
- main.cpp
- data.h
- data.cpp
 
donc voilà le fichier data.cpp

Code :
  1. #include "data.h"
  2. void initmat(matrice3d Laby,int m, int n, int p)
  3. {
  4. int i, j, k;
  5. for(i=0 ; i<m ; i++)
  6.  for(j=0 ; j<n ; j++)
  7.   for(k=0 ; k<p ; k++)
  8.   {
  9.     Laby[i][j][k]=0;
  10.   }
  11. Laby[0][0][5]=1;
  12. }
  13. void prog_bobo(vecteur mvt)
  14. {
  15. int q;
  16. cin >> q;
  17. int a;
  18. for(a=0; q!=-1; a++)
  19. {
  20.  mvt[a]=q;
  21.  cin >> q;
  22. }
  23. mvt[a]=-1;
  24. }


 
et le data.h

Code :
  1. const int MAX=100;
  2. typedef int matrice3d[MAX][MAX][MAX];
  3. typedef int vecteur[MAX];
  4. void initmat(matrice3d Laby,int m,int n,int p);
  5. void prog_bobo(vecteur mvt);


 
et je dois compiler le data.cpp avant le main.cpp mais j'utilise en cin dans le data.cpp donc forcément le #include <iostream> n'est pas dans data mais dans main alors j'ajoute ça dans data :

Code :
  1. #include <iostream>
  2. using namespace std;


mais j'ai ce message d'erreur losque je compile data.cpp :

Code :
  1. /usr//bin/../lib/gcc-lib/i586-mandrake-linux-gnu/3.3.1/../../../crt1.o(.text+0x18): In function `_start':
  2. ../sysdeps/i386/elf/start.S:98: undefined reference to `main'
  3. collect2: ld returned 1 exit status


 
:heink:
Comment dois-je faire ??!!


Message édité par drvins le 25-11-2003 à 11:13:31
Reply

Marsh Posté le 25-11-2003 à 11:11:29   

Reply

Marsh Posté le 25-11-2003 à 11:17:05    

Citation :

et je dois compiler le data.cpp avant le main.cpp mais j'utilise en cin dans le data.cpp donc forcément le #include <iostream> n'est pas dans data mais dans main alors j'ajoute ça dans data :


 
 
mouais [:xx_xx]
 
heuh tu peux nous montrer ta ligne de commande pour compiler tes fichiers ?

Reply

Marsh Posté le 25-11-2003 à 11:21:28    

chrisbk a écrit :

mouais [:xx_xx]
heuh tu peux nous montrer ta ligne de commande pour compiler tes fichiers ?


Code :
  1. g++ -o data data.cpp


 
C'est pas bon ?

Reply

Marsh Posté le 25-11-2003 à 11:22:57    

nan :O
g++ -c data.cpp
g++ -c main.cpp
g++ -o truc data.o main.o
 
(enfin la derniere ligne je suis pu sur, ca fait long que g pas fait du gcc)

Reply

Marsh Posté le 25-11-2003 à 11:26:33    

ça ne change rien, l'erreur est la même !
donc si je laisse le même data.cpp que plus haut (sans iostream) ben le gcc me dit

Code :
  1. data.cpp: In function `void prog_bobo(int*)':
  2. data.cpp:18: error: `cin' undeclared (first use this function)
  3. data.cpp:18: error: (Each undeclared identifier is reported only once for each function it appears in.)

Reply

Marsh Posté le 25-11-2003 à 11:28:24    

'g++ -c data.cpp' et t'as "undefined reference to `main'"???

Reply

Marsh Posté le 25-11-2003 à 11:28:41    

heuh :heink:
en haut t'as une erreur de link, la t'as une erreur de compilation
 
donc dans data.cpp tu inclues ton iostream + le using
les deux erreurs n'ont rien a voir entre elle

Reply

Marsh Posté le 25-11-2003 à 11:30:58    

moktar1er a écrit :

'g++ -c data.cpp' et t'as "undefined reference to `main'"???
 :sweat:


Ahhh j'avais pas rajouté  
#include <iostream>
using namespace std;
 
ça à l'air de fonctionner :)

Reply

Marsh Posté le 25-11-2003 à 11:34:05    

moktar1er a écrit :

'g++ -c data.cpp' et t'as "undefined reference to `main'"???


 
c'est la que tu sens qu'y a certains concept qui ne sont pas completement compris [:ddr555]

Reply

Marsh Posté le 25-11-2003 à 11:35:00    

je compile data.cpp et main.cpp et j'obtiens data.o main.o mais comment je rassemble le tout ?
'g++ -o truc data.o main.o' ne marche pas.


Message édité par drvins le 25-11-2003 à 11:35:35
Reply

Marsh Posté le 25-11-2003 à 11:35:00   

Reply

Marsh Posté le 25-11-2003 à 11:35:30    

chrisbk a écrit :


 
c'est la que tu sens qu'y a certains concept qui ne sont pas completement compris [:ddr555]


 
apprendre à programmer != apprendre les base de la compilation ??? ;)

Reply

Marsh Posté le 25-11-2003 à 11:37:35    

DrVins a écrit :

je compile data.cpp et main.cpp et j'obtiens data.o main.o mais comment je rassemble le tout ?
'g++ -o truc data.o main.o' ne marche pas.


:sweat:

Reply

Marsh Posté le 25-11-2003 à 11:38:27    

t'entends quoi exactement pas "ne marche pas"??? t'as quoi comme erreur?

Reply

Marsh Posté le 25-11-2003 à 11:38:27    

DrVins a écrit :

je compile data.cpp et main.cpp et j'obtiens data.o main.o mais comment je rassemble le tout ?
'g++ -o truc data.o main.o' ne marche pas.


 
ouais je sais pu comment on link avec g++ :O
un expert te dira ca
 
(Mais pitié, a l'avenir, evite les "ca marche aps" et balance le message d'erreur :sweat:)

Reply

Marsh Posté le 25-11-2003 à 11:39:13    

ça me fait :
g++: cannot specify -o with -c or -S and multiple compilations
 
:??:

Reply

Marsh Posté le 25-11-2003 à 11:40:25    

et t'as juste fait "g++ -o main main.o data.o" ??? t'as rien tapé d'autre???

Reply

Marsh Posté le 25-11-2003 à 11:41:20    

DrVins a écrit :

ça me fait :
g++: cannot specify -o with -c or -S and multiple compilations
 
:??:


 
Non c'est pas ça je me suis trompé de ligne de commande mais c'est encore pire :

Code :
  1. main.o(.text+0x0): In function `initmat(int[100] (*) [100], int, int, int)':
  2. : multiple definition of `initmat(int[100] (*) [100], int, int, int)'
  3. data.o(.text+0x0): first defined here
  4. main.o(.text+0xc6): In function `prog_bobo(int*)':
  5. : multiple definition of `prog_bobo(int*)'
  6. data.o(.text+0xc6): first defined here
  7. collect2: ld returned 1 exit status

Reply

Marsh Posté le 25-11-2003 à 11:42:38    

euh ... il ressemble à quoi ton main?
le début surtout ... t'as mis quoi en include dans ton main.cpp?

Reply

Marsh Posté le 25-11-2003 à 11:43:27    

je sens l'include de data.cpp [:ddr555]

Reply

Marsh Posté le 25-11-2003 à 11:43:49    

chrisbk a écrit :

je sens l'include de data.cpp [:ddr555]


 
+ ;) spour ça que j'ai posé la question :p

Reply

Marsh Posté le 25-11-2003 à 11:45:51    

Nan c'est bon :lol:
 
En fait, j'avais mis les 3 fichiers en un pour tester si l'algorithme fonctionnait... je l'avais appelé main.cpp et c'est lui que je compilais avec data ;)
 
Donc, maintenant c'est OK tout fonctionne impec !!!
 
Merci à tous :jap: :love:


Message édité par drvins le 25-11-2003 à 11:46:14
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed