Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3061 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°575468
drvins
Posté le 25-11-2003 à 11:11:29  profilanswer
 

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
mood
Publicité
Posté le 25-11-2003 à 11:11:29  profilanswer
 

n°575473
chrisbk
-
Posté le 25-11-2003 à 11:17:05  profilanswer
 

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 ?

n°575481
drvins
Posté le 25-11-2003 à 11:21:28  profilanswer
 

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 ?

n°575484
chrisbk
-
Posté le 25-11-2003 à 11:22:57  profilanswer
 

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)

n°575488
drvins
Posté le 25-11-2003 à 11:26:33  profilanswer
 

ç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.)

n°575489
Moktar1er
No one replies...
Posté le 25-11-2003 à 11:28:24  profilanswer
 

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

n°575490
chrisbk
-
Posté le 25-11-2003 à 11:28:41  profilanswer
 

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

n°575493
drvins
Posté le 25-11-2003 à 11:30:58  profilanswer
 

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 :)

n°575497
chrisbk
-
Posté le 25-11-2003 à 11:34:05  profilanswer
 

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]

n°575500
drvins
Posté le 25-11-2003 à 11:35:00  profilanswer
 

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
mood
Publicité
Posté le 25-11-2003 à 11:35:00  profilanswer
 

n°575502
Moktar1er
No one replies...
Posté le 25-11-2003 à 11:35:30  profilanswer
 

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 ??? ;)

n°575507
drvins
Posté le 25-11-2003 à 11:37:35  profilanswer
 

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:

n°575510
Moktar1er
No one replies...
Posté le 25-11-2003 à 11:38:27  profilanswer
 

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

n°575511
chrisbk
-
Posté le 25-11-2003 à 11:38:27  profilanswer
 

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:)

n°575515
drvins
Posté le 25-11-2003 à 11:39:13  profilanswer
 

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

n°575516
Moktar1er
No one replies...
Posté le 25-11-2003 à 11:40:25  profilanswer
 

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

n°575517
drvins
Posté le 25-11-2003 à 11:41:20  profilanswer
 

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

n°575519
Moktar1er
No one replies...
Posté le 25-11-2003 à 11:42:38  profilanswer
 

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

n°575521
chrisbk
-
Posté le 25-11-2003 à 11:43:27  profilanswer
 

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

n°575522
Moktar1er
No one replies...
Posté le 25-11-2003 à 11:43:49  profilanswer
 

chrisbk a écrit :

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


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

n°575527
drvins
Posté le 25-11-2003 à 11:45:51  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
[PHP] traiter des fichiers de 40 Mo !!comment faire un seul exe avec plusieurs fichiers...
Recherche: couper un fichier pdf automatiquement en plusieurs petitsCompteur PHP - Comment ne pas compter plusieurs fois la même connectio
Cherche Programme de Visualistation/Debeuging de code XML/XSLprogramme qui communique avec le port serie ???
[MySQL] Executer plusieurs requètes avec OleDBRécupérer des informations sur les fichiers en asp
récupérer le résultat d'un programme dans un .bat 
Plus de sujets relatifs à : [C++] Découpe d'un programme en plusieurs fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR