Utiliser libcurl sur Code::Blocks
Résolu
Bonjour,
Je développe un programme en c++ qui nécessite l'envoie d'email. Pour cela j'ai choisi d'utiliser la libcurl. Je précise que je suis sous Windows et que je code avec Code::Blocks.
Mais voilà j'implémente le code suivant : https://raw.githubusercontent.com/curl/curl/master/docs/examples/smtp-mail.c
je télécharge sur https://curl.haxx.se/download.html la version curl-7.56.0-win64-mingw.7z, je dézip le tout, je link la lib (dans le Search directories j'ajoute le dossier include du zip, et dans le linker settings j'ajoute les 2 .a contenu dans le répertoire lib du zip), je compile et paf undefined reference to `_imp__curl_easy_init'.
J'en déduis que mon le lien avec la libcurl n'à pas fonctionné pourtant je pense avoir tout bien fait.
Quelqu'un pourrait-il m'aider svp?
Je développe un programme en c++ qui nécessite l'envoie d'email. Pour cela j'ai choisi d'utiliser la libcurl. Je précise que je suis sous Windows et que je code avec Code::Blocks.
Mais voilà j'implémente le code suivant : https://raw.githubusercontent.com/curl/curl/master/docs/examples/smtp-mail.c
je télécharge sur https://curl.haxx.se/download.html la version curl-7.56.0-win64-mingw.7z, je dézip le tout, je link la lib (dans le Search directories j'ajoute le dossier include du zip, et dans le linker settings j'ajoute les 2 .a contenu dans le répertoire lib du zip), je compile et paf undefined reference to `_imp__curl_easy_init'.
J'en déduis que mon le lien avec la libcurl n'à pas fonctionné pourtant je pense avoir tout bien fait.
Quelqu'un pourrait-il m'aider svp?
2 réponses
-
ContributeurBonsoir antheor19,
Oui, suit ces instructions : https://forums.commentcamarche.net/forum/affich-37594493-codeblocks-installer-une-bibliotheque-librairie qui prennent justement comme exemple libcurl
Dal-
-
Contributeursi tu compiles statiquement, contentes toi de choisir
libcurl.a
dans "Linker settings" (et paslibcurl.dll.a
), et vérifie que tu n'as pas déplacé les fichiers .a et qu'ils sont toujours à l'endroit indiqué dans ce dialogue.
dans "Compiler settings - Other options", assures toi d'avoir mis-lcurl
-
J'ai vérifié l'emplacement de mes fichiers .a et ils sont au même endroit. Je n'avais pas mis de
-lcurl
alors j'ai essayé de le rajouter dans "Compiler settings - Other compiler options" et dans "Compiler settings - Other ressource compiler options", j'ai aussi enlevélibcurl.dll.a
, mais j'ai toujours le même problème.
Le problème pourrait venir de code::blocks peut être? -
ContributeurCela serait étonnant, à moins que tu utilises une version nightly de Code::blocks (quelle est ta version ?).
Je ne peux pas facilement tenter de reproduire ton problème car étant sous Linux depuis que j'ai écris cette entrée de la FAQ, je n'ai pas plus sous la main de machine Windows 64 bits :-(
Peux-tu faire un rebuild complet et poster le contenu complet de la fenêtre "Build log" (pas "Build messages") pour voir la totalité de la commande passée et le résultat ? -
J'utilise la version 16.01 de Code::Blocks.
Voilà je t'ai fait un rebuild et je vois un un petit mingw32 le problème ne viendrait pas du fait que je possède une version 32b de Code::Blocks? Parce que si c'est le cas je vais mourir de honte ^^.
-------------- Clean: Debug in myCurl (compiler: GNU GCC Compiler)---------------
Cleaned "myCurl - Debug"
-------------- Build: Debug in myCurl (compiler: GNU GCC Compiler)---------------
mingw32-g++.exe -Wall -fexceptions -lcurl -g -I..\curl-7.56.0-win64-mingw\include -c E:\c++\myCurl\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -o bin\Debug\myCurl.exe obj\Debug\main.o ..\curl-7.56.0-win64-mingw\lib\libcurl.a
obj\Debug\main.o: In function `main':
E:/c++/myCurl/main.cpp:94: undefined reference to `_imp__curl_easy_init'
E:/c++/myCurl/main.cpp:97: undefined reference to `_imp__curl_easy_setopt'
E:/c++/myCurl/main.cpp:106: undefined reference to `_imp__curl_easy_setopt'
E:/c++/myCurl/main.cpp:111: undefined reference to `_imp__curl_slist_append'
E:/c++/myCurl/main.cpp:112: undefined reference to `_imp__curl_slist_append'
E:/c++/myCurl/main.cpp:113: undefined reference to `_imp__curl_easy_setopt'
E:/c++/myCurl/main.cpp:118: undefined reference to `_imp__curl_easy_setopt'
E:/c++/myCurl/main.cpp:119: undefined reference to `_imp__curl_easy_setopt'
E:/c++/myCurl/main.cpp:120: undefined reference to `_imp__curl_easy_setopt'
E:/c++/myCurl/main.cpp:123: undefined reference to `_imp__curl_easy_perform'
E:/c++/myCurl/main.cpp:128: undefined reference to `_imp__curl_easy_strerror'
E:/c++/myCurl/main.cpp:131: undefined reference to `_imp__curl_slist_free_all'
E:/c++/myCurl/main.cpp:141: undefined reference to `_imp__curl_easy_cleanup'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
14 error(s), 0 warning(s) (0 minute(s), 0 second(s))
-
-
Merci beaucoup pour toute ton aide tu m'as appris beaucoup de chose. Je vais me lancer dans les requêtes get /post http j'aurais dû y penser plutôt.
Encore un grand merci.
Antheor19