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

  FORUM HardWare.fr
  Programmation
  C++

  debutant : compile sous borland mais pas gcc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

debutant : compile sous borland mais pas gcc

n°375499
GUG
Posté le 29-04-2003 à 08:51:56  profilanswer
 

j ai le code suivant qui compuile sous borlan mais pas gcc ..., il y a donc surment une erreur qqpart : gcc me retourne une erreur sur ld ...
merci davance
 

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. struct  Scatfic {
  4. char name[30];
  5. char date[8];
  6. int indice;
  7. }Catfic[100];
  8. int Taballoc[1000];
  9. char name[30];
  10. bool Delfile( char name[30], Scatfic Catfic[100], int Taballoc[1000],  int Tetelibre) {
  11. int i=0;
  12.    
  13.   for(i=0 ; i<101 ; i++) {
  14.  if ( strcmp(Catfic[i].name,name) )
  15.          cout<<"test"<<endl;
  16.   };
  17.  
  18.   return 0;
  19. }


Message édité par GUG le 29-04-2003 à 08:54:08
mood
Publicité
Posté le 29-04-2003 à 08:51:56  profilanswer
 

n°375504
chrisbk
-
Posté le 29-04-2003 à 08:56:15  profilanswer
 

ce quoi ce 101 dans la boucle ? Pis c koi ce souc tout court [:joce]

n°375506
GUG
Posté le 29-04-2003 à 08:57:33  profilanswer
 

en fait c peut etre cygwin qui foire :  
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libcygwin.a(licmain.o)(.text+0x7c):undefined reference to '_WinMain@16'
collect2: ld returned 1 exit status

n°375510
GUG
Posté le 29-04-2003 à 08:58:46  profilanswer
 

chrisbk a écrit :

ce quoi ce 101 dans la boucle ? Pis c koi ce souc tout court [:joce]


euh bah cad :D euh (prof de merde !!)

n°375511
chrisbk
-
Posté le 29-04-2003 à 08:59:19  profilanswer
 

[:rofl]
 
Ah ok je cprends mieux la :D
 
Bon, ben regarde dans les options de cygwin si t'as un truc pour faire un exe em mode "console"

n°375515
skeye
Posté le 29-04-2003 à 09:03:50  profilanswer
 

GUG a écrit :

j ai le code suivant qui compuile sous borlan mais pas gcc ..., il y a donc surment une erreur qqpart : gcc me retourne une erreur sur ld ...
merci davance
 

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. struct  Scatfic {
  4. char name[30];
  5. char date[8];
  6. int indice;
  7. }Catfic[100];
  8. int Taballoc[1000];
  9. char name[30];
  10. bool Delfile( char name[30], Scatfic Catfic[100], int Taballoc[1000],  int Tetelibre) {
  11. int i=0;
  12.    
  13.   for(i=0 ; i<101 ; i++) {
  14.  if ( strcmp(Catfic[i].name,name) )
  15.          cout<<"test"<<endl;
  16.   };
  17.  
  18.   return 0;
  19. }




Je vois un ou deux trucs bizarres:
1)char name[30] et int Taballoc[1000] sont définis 2 fois (globalement et en tant que paramètre de ta fonction).
2) Même chose pour Catfic[100], qui devrait également plutot apparaitre ainsi dans l'entete de la fonction (ne pas oublier le struct):

Code :
  1. bool Delfile( char name[30], struct Scatfic Catfic[100], int Taballoc[1000],  int Tetelibre)


 
Tu pourrais nous donner le reste (s'il y a autre chose)?
Je ne vois rien qui explique une erreur de link ici...Donne aussi ta ligne de commande pour compiler (ou ton makefile).

n°375517
GUG
Posté le 29-04-2003 à 09:05:46  profilanswer
 

il n y a rien d autre, pour compiler :  
g++.exe lefichier.cpp ;)  
bon je v arranger tout ca pour voir :D

n°375518
skeye
Posté le 29-04-2003 à 09:05:50  profilanswer
 

Si cela constitue l'intégralité de ton prog, il beugle p-e parce-qu'il n'y a pas de main, tout simplement...

n°375520
skeye
Posté le 29-04-2003 à 09:07:21  profilanswer
 

GUG a écrit :

il n y a rien d autre, pour compiler :  
g++.exe lefichier.cpp ;)  
bon je v arranger tout ca pour voir :D  


voir ma réponse précédente, ca doit expliquer le pb de link.
Si tu veux faire un executable il te faut un main...

n°375521
GUG
Posté le 29-04-2003 à 09:08:39  profilanswer
 

GUG a écrit :

j ai le code suivant qui compuile sous borlan mais pas gcc ..., il y a donc surment une erreur qqpart : gcc me retourne une erreur sur ld ...
merci davance
 

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. struct  Scatfic {
  4. char name[30];
  5. char date[8];
  6. int indice;
  7. }Catfic[100];
  8. int Taballoc[1000];
  9. char name[30];
  10. bool Delfile(name,Catfic[100],Taballoc[1000],Tetelibre) {
  11. int i=0;
  12.    
  13.   for(i=0 ; i<100 ; i++) {
  14.  if ( strcmp(Catfic[i].name,name) )
  15.          cout<<"test"<<endl;
  16.   };
  17.  
  18.   return 0;
  19. }




Message édité par GUG le 29-04-2003 à 09:15:59
mood
Publicité
Posté le 29-04-2003 à 09:08:39  profilanswer
 

n°375524
chrisbk
-
Posté le 29-04-2003 à 09:12:03  profilanswer
 

skeye a écrit :


voir ma réponse précédente, ca doit expliquer le pb de link.
Si tu veux faire un executable il te faut un main...


un WinMain precisemment, donc appli win32
C pour ca que je lui demande de chercher pour une option "mode console" histoire qu'il puisse continuer a faire du main() standart

n°375525
GUG
Posté le 29-04-2003 à 09:16:50  profilanswer
 

apres modif voila ce que j ai fait : et ca compile :  
 

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. struct  Scatfic {
  4. char name[30];
  5. char date[8];
  6. int indice;
  7. }Catfic[100];
  8. int Taballoc[1000];
  9. bool Delfile(char name[30] ,int &Tetelibre) {
  10. int i=0;
  11.    
  12.   for(i=0 ; i<100 ; i++) {
  13.  if ( strcmp(Catfic[i].name,name) )
  14.          cout<<"test"<<endl;
  15.   };
  16. // strcpy(Catfic[i].name,"¤" );
  17.  
  18. return 0;
  19. }
  20. int main(void) {
  21. return 0;
  22. }

n°375526
skeye
Posté le 29-04-2003 à 09:17:10  profilanswer
 

chrisbk a écrit :


un WinMain precisemment, donc appli win32
C pour ca que je lui demande de chercher pour une option "mode console" histoire qu'il puisse continuer a faire du main() standart


à priori il compile avec gcc, donc un bon vieux main devrait suffire, non?
en tout cas j'ai jamais utilisé de winmain avec gcc/cygwin!

n°375527
lorill
Posté le 29-04-2003 à 09:17:35  profilanswer
 

GUG a écrit :

apres modif voila ce que j ai fait : et ca compile :  
 

Code :
  1. int main(void) {
  2. return 0;
  3. }




et je suis sur que ton exe est super utile  :pt1cable:

n°375529
chrisbk
-
Posté le 29-04-2003 à 09:19:08  profilanswer
 

skeye a écrit :


à priori il compile avec gcc, donc un bon vieux main devrait suffire, non?
en tout cas j'ai jamais utilisé de winmain avec gcc/cygwin!


ben heuh :
 

Citation :

/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libcygwin.a(licmain.o)(.text+0x7c):undefined reference to '_WinMain@16'
collect2: ld returned 1 exit status


 
Bon, vu qu'y avait ni main ni WinMain..... :D

n°375532
skeye
Posté le 29-04-2003 à 09:21:23  profilanswer
 

GUG a écrit :

apres modif voila ce que j ai fait : et ca compile :  
 

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. struct  Scatfic {
  4. char name[30];
  5. char date[8];
  6. int indice;
  7. }Catfic[100];
  8. int Taballoc[1000];
  9. bool Delfile(char name[30] ,int &Tetelibre) {
  10. int i=0;
  11.    
  12.   for(i=0 ; i<100 ; i++) {
  13.  if ( strcmp(Catfic[i].name,name) )
  14.          cout<<"test"<<endl;
  15.   };
  16. // strcpy(Catfic[i].name,"¤" );
  17.  
  18. return 0;
  19. }
  20. int main(void) {
  21. return 0;
  22. }




 [:sunn]  
Il ne te reste plus qu'à appeler ta fonction dans le main, histoire de faire quelquechose...
Je te conseillerais aussi d'éviter les variables globales...
J'aurais plutot vu un truc de ce genre:

Code :
  1. #include <iostream.h>
  2. #include <string.h>
  3. struct  Scatfic {
  4.   char name[30];
  5.   char date[8];
  6.   int indice;
  7. };
  8. bool Delfile(char name[30],struct Scatfic Catfic[100], int Taballoc[1000], int Tetelibre) {
  9.   int i=0;
  10.   for(i=0 ; i<100 ; i++) {
  11.     if ( strcmp(Catfic[i].name,name) )
  12.       cout<<"test"<<endl;
  13.   };
  14.   return 0;
  15. }
  16. int
  17. main(int argc, char* argv[])
  18. {
  19.   char ptitnom[30]="fichier";
  20.   struct Scatfic cat[100];
  21.   int monbotablohohoho[1000];
  22.   int jesuilibredanmatete=0;
  23.   bool camarche = Delfile(ptitnom, cat, monbotablohohoho, jesuilibredanmatete);
  24.   if(camarche)
  25.     cout<<"ouaiiiiiiiiiiiiiiiiiiiiiis"<<endl;
  26.   else
  27.     cout<<"zuteuhhhhhhhhhhhhhhhhhhhhh"<<endl;
  28.   return 1;
  29. }


Message édité par skeye le 29-04-2003 à 09:28:24
n°375541
skeye
Posté le 29-04-2003 à 09:25:43  profilanswer
 

chrisbk a écrit :


ben heuh :
 

Citation :

/usr/lib/gcc-lib/i686-pc-cygwin/3.2/../../../libcygwin.a(licmain.o)(.text+0x7c):undefined reference to '_WinMain@16'
collect2: ld returned 1 exit status


 
Bon, vu qu'y avait ni main ni WinMain..... :D


pb au link...Je suppose que c'est du au fait que cygwin est un "faux" bash pour windows (au final tu fais du bash dans une console ms-dos classique...). Le gcc filé avec doit avoir un fonctionnement particulier afin d'assurer le fonctionnement sous windows de façon transparente pour l'utilisateur... :??:


Message édité par skeye le 29-04-2003 à 09:26:11
n°375542
GUG
Posté le 29-04-2003 à 09:26:22  profilanswer
 

merci a tous :)  :jap:  
je vais voir ca mais bon les variables globales c moins chiant a utiliser :D

n°375546
skeye
Posté le 29-04-2003 à 09:27:27  profilanswer
 

GUG a écrit :

merci a tous :)  :jap:  
je vais voir ca mais bon les variables globales c moins chiant a utiliser :D  


C'est aussi une des meilleures façons de faire des conneries sans s'en rendre compte...:D

n°375547
chrisbk
-
Posté le 29-04-2003 à 09:27:34  profilanswer
 

skeye a écrit :


pb au link...Je suppose que c'est du au fait que cygwin est un "faux" bash pour windows (au final tu fais du bash dans une console ms-dos classique...). Le gcc filé avec doit avoir un fonctionnement particulier afin d'assurer le fonctionnement sous windows de façon transparente pour l'utilisateur... :??:


 
heuh en fait, je vois pas trop ce que tu veux dire

n°375555
skeye
Posté le 29-04-2003 à 09:33:31  profilanswer
 

chrisbk a écrit :


 
heuh en fait, je vois pas trop ce que tu veux dire


Ben euh tout ce que je voulais dire c'est que les librairies utilisées par le gcc de cygwin sont probablement != des librairies classiques de gcc sous linux par ex...
La référence à un "WinMain" qui apparaissait dans son erreur de link venait probablement du fonctionnement interne de son compilateur, et ne voulait pas dire que ce dernier attendait de la part de l'utilisateur l'utilisation d'une syntaxe inhabituelle...

n°375558
chrisbk
-
Posté le 29-04-2003 à 09:34:55  profilanswer
 

?
 
WinMain est le point d'entree stdart pour une appli Win32  
pe que ne trouvant pas de main() il a tenter de voir si y'avait un WinMain et vu que non => echec ?

n°375562
skeye
Posté le 29-04-2003 à 09:38:48  profilanswer
 

chrisbk a écrit :

?
 
WinMain est le point d'entree stdart pour une appli Win32  
pe que ne trouvant pas de main() il a tenter de voir si y'avait un WinMain et vu que non => echec ?


Moué...pas convaincu...
On demande un expert de gcc/cygwin!
Je pense plutôt que lors de la compil cette version précise de cygwin convertit le main classique en winmain de façon transparente pour l'utilisateur...mais bon tant qu'on n'a pas de preuves...
Tiens il faudrait que GUG essaie de remplacer main() par WinMain() dans son code, pour voir...:D

n°375571
chrisbk
-
Posté le 29-04-2003 à 09:42:23  profilanswer
 

skeye a écrit :


Moué...pas convaincu...
On demande un expert de gcc/cygwin!
Je pense plutôt que lors de la compil cette version précise de cygwin convertit le main classique en winmain de façon transparente pour l'utilisateur...mais bon tant qu'on n'a pas de preuves...
Tiens il faudrait que GUG essaie de remplacer main() par WinMain() dans son code, pour voir...:D


 
mouais tiens, gug met ca pour voir a la place de ton int main() :
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
 

n°375582
skeye
Posté le 29-04-2003 à 09:48:05  profilanswer
 

chrisbk a écrit :


 
mouais tiens, gug met ca pour voir a la place de ton int main() :
 
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
 
 


En tout cas djgpp comprend rien si je fais ça...
:whistle:
 
[edit]
D'ailleurs ca m'étonnerait que gcc connaisse tous ces types de données farfelus...:D


Message édité par skeye le 29-04-2003 à 09:49:05
n°375588
chrisbk
-
Posté le 29-04-2003 à 09:49:21  profilanswer
 

skeye a écrit :


En tout cas djgpp comprend rien si je fais ça...
:whistle:
 
[edit]
D'ailleurs ca m'étonnerait que gcc connaisse tous ces types de données farfelus...:D


 
#include <windows.h> ?

n°375603
skeye
Posté le 29-04-2003 à 09:57:03  profilanswer
 

chrisbk a écrit :


 
#include <windows.h> ?


tjrs pas chez moi...et ce genre de trucs sur un compilo venu du monde unix/linux c'est un coup à se faire taper...:lol:

n°375606
chrisbk
-
Posté le 29-04-2003 à 09:59:40  profilanswer
 

skeye a écrit :


tjrs pas chez moi...et ce genre de trucs sur un compilo venu du monde unix/linux c'est un coup à se faire taper...:lol:


 
c sur....mais dans ce cas pkoi le compilo parle de WinMain hein ? :O :D

n°375610
skeye
Posté le 29-04-2003 à 10:01:24  profilanswer
 

chrisbk a écrit :


 
c sur....mais dans ce cas pkoi le compilo parle de WinMain hein ? :O :D


ben euh...pask'il a pas le choix pour que ca marche sous win?:??:
Aucune idée en fait...!

n°375701
GUG
Posté le 29-04-2003 à 11:02:14  profilanswer
 

bon bah merci les gars j ai bien avence :)

mood
Publicité
Posté le   profilanswer
 


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

  debutant : compile sous borland mais pas gcc

 

Sujets relatifs
Erreur lors de la compilation sous borland....[débutant] Delphi ... structure if ..then
<graphics.h> ne fonctionne pas avec Borland C++ Compiler 5.5Besoin d'aide avec Borland c++ builder
debutant total a besoin d'aide sur php et html[DEBUTANT] pb concernant la gestion des droits
Un chti pb avec les sockets (debutant )Petite question de débutant en vba sur excel....
Lire les 128 derniers octets d'un fichier [Débutant]Completement debutant !
Plus de sujets relatifs à : debutant : compile sous borland mais pas gcc


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