Erreur de débutant et utilisation lib Eet

Erreur de débutant et utilisation lib Eet - C++ - Programmation

Marsh Posté le 16-04-2009 à 14:40:46    

Bonjour,
 
Bon avant tout, je précise que je n'ai jamais eu un cours de C++ digne de ce nom (les profs sont passés du "on apprendra le C++" au "on à appris le C++" en quelques semaines, donc merci de ne pas me décapiter pour les (nombreuses) erreurs que j'ai comises.
 
J'essaie en ce moment d'utiliser la librairie Eet, qui permet de manipuler des fichiers de configuration crées par mon serveur gestionnaire de bureau (E17) afin de les interfacer avec une petite suite de logiciels que j'écris dans un langage que je maîtrise mieux (Ruby).
Le soucis c'est que vu que je n'y connais pas grand chose en C++ , je me cogne à pas mal de soucis.
Celui qui m'occupe en ce moment est tout simplement un problème lié au linkage des fichiers. En effet en cours on nous fournissait toujours un joli makefile déjà écrit et on ne nous disait rien d'autre que de taper "make all" quand on avait fini notre bout de code.
Bref, j'ai repris un bout de code de la documentation de eet :  
 

Code :
  1. #include <Eet.h>
  2. int
  3. main(int argc, char **argv)
  4. {
  5.   Eet_File *ef;
  6.   void     *ret;
  7.   int       size;
  8.   eet_init();
  9.   // open the file again and blindly get the entries we wrote
  10.   ef = eet_open("../.e/estickies/config.eet", EET_FILE_MODE_READ);
  11.   ret = eet_read(ef, "Entry 1", &size);
  12.   printf("%s\n", ret);
  13.   ret = eet_read(ef, "Entry 2", &size);
  14.   printf("%s\n", ret);
  15.   ret = eet_read(ef, "Entry 3", &size);
  16.   printf("%s\n", ret);
  17.   eet_close(ef);
  18.   eet_shutdown();
  19. }


 
Et bien sur, ça ne marche pas :
 

Citation :


$ g++ -Wall -W -pedantic test.cpp -o test
test.cpp: In function ‘int main(int, char**)’:
test.cpp:15: warning: format ‘%s’ expects type ‘char*’, but argument 2 has type ‘void*’
test.cpp:17: warning: format ‘%s’ expects type ‘char*’, but argument 2 has type ‘void*’
test.cpp:19: warning: format ‘%s’ expects type ‘char*’, but argument 2 has type ‘void*’
test.cpp: At global scope:
test.cpp:4: warning: unused parameter ‘argc’
test.cpp:4: warning: unused parameter ‘argv’
/tmp/ccEp8lFW.o: In function `main':
test.cpp:(.text+0x12): undefined reference to `eet_init'
test.cpp:(.text+0x26): undefined reference to `eet_open'
test.cpp:(.text+0x43): undefined reference to `eet_read'
test.cpp:(.text+0x6b): undefined reference to `eet_read'
test.cpp:(.text+0x93): undefined reference to `eet_read'
test.cpp:(.text+0xac): undefined reference to `eet_close'
test.cpp:(.text+0xb1): undefined reference to `eet_shutdown'
collect2: ld returned 1 exit status


 
Si j'ai bien compris ce que j'ai lu sur le net, ça vient du fait que le linker ne trouve pas le Eet.o non? En effet, sur mon système je vois bien un Eet.h dans /usr/include/Eet.h mais aucun Eet.o, mais comment corriger ça?
 
Merci d'avance et désolé pour la question de débutant.


Message édité par esox_ch le 16-04-2009 à 14:40:58

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 16-04-2009 à 14:40:46   

Reply

Marsh Posté le 16-04-2009 à 16:18:37    

Un ami apitoyé par mon sort m'a donné la solution. Il suffisait en fait d'ajouter un :  
-leet à la fin de la commande g++ :
 

Citation :


g++ -Wall -W -pedantic test.cpp -o test -leet


Et voilà


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Sujets relatifs:

Leave a Replay

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