Pour résoudre les problèmes, un examen attentif des messages d'erreur est toujours très intéressant.
yazes a écrit :
quand je compile mon code : " cprogram files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.7.1/../../../../mingw32/bin/ld.exe: cannot find -lglib-2.0 " J'obtiens plusieurs fois cette erreur, la .lib changeant de nom à chaque ligne.
|
Ici, vous lisez ld.exe qui est l'éditeur de liens. Donc le problème se situe dans la phase terminale de la création de l'exécutable, après la transformation des fichiers .c et .h en fichiers objets (donc si jamais vous utilisez glib.h, alors ça s'est bien passé, puisque vous ne nous montrez aucun message avant celui concernant ld.exe).
Vous lisez "-lglib-2.0". Le début "-l" est une option du makefile disant d'utiliser la bibliothèque (librairy en anglais) dont le nom est indiqué après. Ce nom n'est pas facile à connaître, surtout pour les débutants. Les vrais vieux savent qu'autrefois la ligne de commande était très courte, et que pour gagner des octets, les noms des bibliothèques n'étaient pas notés en entier. D'abord, on enlevait les 3 première lettres, parce que par convention, c'était toujours "lib".
Ensuite, l'extension n'était pas toujours indiquée (je ne sais pas pourquoi vous parlez de ".lib", les bibliothèques ne se terminent pas toujours pas ".lib", c'est dommage que vous n'ayez pas copié ici plus de messages d'erreur parce que c'est peut-être dans ces messages que vous auriez lu ".lib" bien que j'aie des doutes). Ici, le nom réel de la bibliothèque manquante est donc libglib-2.0.lib ou libglib-2.0.a ou autre chose d'approchant.
Sur mon PC, je vois que j'ai libglib-2.0-0.dll dans le dossier \Program Files\LMMS. Chez moi, le nom est donc différent puisqu'il a un suffixe "-0" et une extension ".dll". Je n'ai aucun autre fichier *glib*.* quelque chose sur mon PC bien que j'utilise mingw sans problème depuis des années. L'extension ".dll" que j'ai chez moi, montre que c'est une bibliothèque dynamique, donc qui n'a pas besoin, et ne doit pas, être liée lors de la création de l'exécutable.
Finalement la question qui se pose est de savoir pourquoi vous avez ce "-lglib-2.0" dans votre fichier makefile.
D'où vient ce makefile ?
Il peut soit, être créé par Code:Blocks en fonction du type de fichier exécutable que vous désirez (et il est possible que vous vous soyez trompé à ce niveau), soit être créé indépendamment par vous (ou par quelqu'unn d'autre, mais que vous avez repris pour l'occasion).
Message édité par olivthill le 24-12-2015 à 13:53:01