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

  FORUM HardWare.fr
  Programmation

  [C++] Pb au linkage

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Pb au linkage

n°190212
freds45
Posté le 05-08-2002 à 21:05:50  profilanswer
 

Voila, j'ai écrit un petit truc en C, qui compile très bien. Les sources sont découpées en plusieurs fichiers .c .
J'ai voulu créer une petite interface graphique pour ca, avec QT. Je copie les fichiers du programme d'origine en C. Une fois arrivé au linkage, il ne trouve pas une fonction qui est définie dans un autre fichier, alors que ca marchait bien avant !
le prototype de la fonction est déclaré dans un .h, inclus dans la source en C++...
Je ne peux pas poster les sources, la, mais je tacherai de le faire demain.
Précision... tout cela est fait sous une slackware 8.1
voili voila, si qqun a une idée... ;)

mood
Publicité
Posté le 05-08-2002 à 21:05:50  profilanswer
 

n°190221
freds45
Posté le 05-08-2002 à 21:23:47  profilanswer
 

Compléments d'infos:
 
Message d'erreur du linker:


[~/old/root/kmac/gui]root@Landi4612>make
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o get_next_line.o get_next_line.c
g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o main.o main.cpp
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o my.o my.c
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o my_str_to_wordtab.o my_str_to_wordtab.c
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o openfile.o openfile.c
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o read_coll.o read_coll.c
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o search.o search.c
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o searchopts.o searchopts.c
gcc -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/linux-g++ -o utils.o utils.c
g++  -o gui get_next_line.o main.o my.o my_str_to_wordtab.o openfile.o read_coll.o search.o searchopts.o utils.o   -Wl,-rpath,/usr/lib/qt-3.0.4/lib -L/usr/lib/qt-3.0.4/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
main.o: In function `main':
main.o(.text+0x46): undefined reference to `opencol(char *)'
collect2: ld returned 1 exit status
make: *** [gui] Error 1
[~/old/root/kmac/gui]root@Landi4612>


 
La déclaration dans le .h de ma fonction:

Code :
  1. t_collection opencol(char *filename);


 
Le main:
 

Code :
  1. #include "includes.h"
  2. int    main(int ac, char **av)
  3. {
  4.   int    nbvols = 42;
  5.   int    current = 0;
  6.   int    i;
  7.   QApplication   a(ac, av);
  8.   QListView   liste(0, "liste" );
  9.   t_collection   coll;
  10.   coll = opencol(av[1]);
  11.   if(ac == 1)
  12.     {
  13.       printf("%s", SYNTAX);
  14.       exit (1);
  15.     }
  16.   nbvols = coll.volcount;
  17.   QListViewItem  *items[nbvols];
  18.   liste.addColumn("Volume" );
  19.   liste.setRootIsDecorated(1);
  20.   for(current = 0; current < nbvols; current++)
  21.     {
  22.       items[current] = new QListViewItem(&liste, "toto" );
  23.       for(i = 0; i < 3; i++)
  24. new QListViewItem(items[current], "sub" );
  25.     }
  26.  
  27.   a.setMainWidget(&liste);
  28.   liste.show();
  29.   return a.exec();
  30. }


 
Merci !  :)


Message édité par freds45 le 05-08-2002 à 21:24:30
n°190282
LeGreg
Posté le 05-08-2002 à 22:04:49  profilanswer
 

il est ou le corps de opencol?
 
LeGreg

n°190707
freds45
Posté le 06-08-2002 à 14:00:36  profilanswer
 

legreg a écrit a écrit :

il est ou le corps de opencol?
 
LeGreg




 
dans un autre fichier, read_col.c
 
pourtant, celui ci est bien compilé et utilisé lors du linkage, alors je pige pas :/

n°190715
LeGreg
Posté le 06-08-2002 à 14:16:52  profilanswer
 

renomme tes fichiers .c en .cpp
ou alors entoure tes declarations dans ton .h par un  

Code :
  1. #ifdef _cplusplus
  2. extern 'C' {
  3. #endif
  4. t_collection opencol(char *filename);
  5. #ifdef _cplusplus
  6. }
  7. #endif


 
edit:la solution la plus simple a mon gout si tu démarres
un nouveau projet est de renommer tes fichiers .c en .cpp
ou en .cc. Cela te permettra d'utiliser toutes les ressources du C++ dans ton nouveau projet.
 
A+
LeGreg


Message édité par LeGreg le 06-08-2002 à 14:32:47
n°191024
freds45
Posté le 06-08-2002 à 20:35:45  profilanswer
 

legreg a écrit a écrit :

renomme tes fichiers .c en .cpp
ou alors entoure tes declarations dans ton .h par un  

Code :
  1. #ifdef _cplusplus
  2. extern 'C' {
  3. #endif
  4. t_collection opencol(char *filename);
  5. #ifdef _cplusplus
  6. }
  7. #endif


 
edit:la solution la plus simple a mon gout si tu démarres
un nouveau projet est de renommer tes fichiers .c en .cpp
ou en .cc. Cela te permettra d'utiliser toutes les ressources du C++ dans ton nouveau projet.
 
A+
LeGreg




 
 
ok, je vais tenter de voir ca, merci :)


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

  [C++] Pb au linkage

 

Sujets relatifs
[VC++.NET] probleme de linkage[builder c++] Linkage de dll
Pbeme de linkage severeCompilation GCC + Assemblage NASM, foirage au linkage LD
pb de linkage en C++ sous visual ki marche sous mandrake HELP !!![Visual C++] / problème de linkage...
[mysql++/VC++6.0/MFC] probleme de linkage !!! urgent !!!J'en chie avec le compilo C Watcom (IDE) version 11 pour le linkage
Compilation Visual C++ et Linkage DJGPP : pourquoi ca marche pas? 
Plus de sujets relatifs à : [C++] Pb au linkage


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)