esox_ch | 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 :
- #include <Eet.h>
- int
- main(int argc, char **argv)
- {
- Eet_File *ef;
- void *ret;
- int size;
- eet_init();
- // open the file again and blindly get the entries we wrote
- ef = eet_open("../.e/estickies/config.eet", EET_FILE_MODE_READ);
- ret = eet_read(ef, "Entry 1", &size);
- printf("%s\n", ret);
- ret = eet_read(ef, "Entry 2", &size);
- printf("%s\n", ret);
- ret = eet_read(ef, "Entry 3", &size);
- printf("%s\n", ret);
- eet_close(ef);
- eet_shutdown();
- }
|
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
|