Help API MySQL / C-Cpp

Résolu
frogs_yoman Messages postés 11 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 août 2006 - 22 avril 2006 à 20:49
frogs_yoman Messages postés 11 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 août 2006 - 23 avril 2006 à 16:17
Bonjour à tous,
Je n'arrive pas à compiler de programme utilisant l'API mysql.h sous winxp, que ce soit sous DevC++ ou VisualC++6.
J'ai installé mysql-5.0.18-win32.
J'ai bien référencé les liens lib et h dans le compilateur et lorsque je compile avec #include <mysql.h> , il plante à chaque fois sur mysql_com.h avec des erreurs de type SOCKET undeclared...et des centaines d'erreurs...
Est-ce que le fichier mysql_com.h a un probleme ??

Merci pour votre aide, suis bloqué ^^

6 réponses

frogs_yoman Messages postés 11 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 août 2006
23 avril 2006 à 16:17
Merci pour votre aide.
Apres avoir passé encore la journee sur le net, et des centaines de tests
((notamment:
J'ai d'abord testé différentes options avec la creation du .a de la lib libmysql.lib (avec reimp.exe et dlltool qui recreent la dll et sa definition: libmysql.a et libmysql.dll: voir sur le net: http://www.openwebspider.org/link_mysql_windows_dev_cpp.php ou http://dev.mysql.com/doc/refman/4.1/en/windows-client-compiling.html
enfin c tres complexe et ça marche pas ...alors à ceux qui ont le même pb, passez le chemin ^^ ))
j'ai trouvé une solution:

=>> Plus simplement j'ai finit par retourner sous dev cpp! j'ai telechargé le package mysql (qui crée le dossier C:\Dev-Cpp\include\mysql que l'on reference ensuite avec #include<mysql/mysql.h>)

Enfin j'ai ajouté dans: outils/options du compil/"lors de l'appel du compil": -lmysql (oui, -lmysql et pas -llibmysql... allez savoir pq...^^)
Je pense que ça doit faire la même chose qu'avec #pragma comment(lib, "libmysql.lib") mais bon j'ai pas testé
Voilà, et sous vc++6 il faut juste ajouter les path .../mysql/include et .../mysql/lib/opt et puis ajouter sous Project/settings/ onglet link/ en dernier dans "oblject/library modules" : libmysql.lib (oui cette fois libmysql.lib et pas mysql lol )

Voilà encore merci, je pense que vu le nombre de personnes ayant visiblemnt le meme pb, il serait bon de mettre ces explications dans une rubrique plus ciblée...
++
3
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
23 avril 2006 à 00:06
SOCKET undeclared

tu as peux être oublié
#include <windows.h>
ou
#include <winsock.h>
ou
#include <winsock2.h>



Il est important de mettre windows.h avant mysql.h.
0
frogs_yoman Messages postés 11 Date d'inscription mercredi 22 décembre 2010 Statut Membre Dernière intervention 25 août 2006
23 avril 2006 à 10:50
Salut, oui tu as raison, apres des heures de recherche sur le net, et enormement de personnes ayant visiblement le meme type de probleme! j'ai pu apprendre qu'il faut ajouter :
winsock.h ou windows.h ou encore my_global.h (fournie par mysql) et ^cela AVANT mysql.h.
J'ai donc fait ça mais maintenant j'ai de nouvelles erreurs:
----
SansNom2.obj : error LNK2001: unresolved external symbol [mailto:_mysql_init@4 _mysql_init@4]
SansNom2.obj : error LNK2001: unresolved external symbol [mailto:_mysql_select_db@8 _mysql_select_db@8]
...
Release/SansNom2.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
---
Erreurs que de nombreuses personnes semblent aussi avoir (recherche google: "mysql unresolved external": y a du monde ^^)
Et j'ai ce probleme pour toutes les fonctions de mysql que je veux exécuter.
J'ai donc un pb de lien avec une lib je suppose mais pourtant j'ai bien rentré les paths de mysql\lib et mysql\include dans mon projet (que ce soit d'ailleurs sous devc++ ou visulac++6...)

Help!!!!!
ça me prend la tête ^^^^^^
0
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
23 avril 2006 à 11:17
Problème d'édition de liens. Ton compilateur ou plutôt son module d'éditions de liens ne sait pas où trouver les librairies précompilées fourni avec ta distribution de mysql.
Si tu utilises Dev Cpp, va dans "outils->Compilateur->Répertoires->Répertoires Bibliothèques" et ajoute le répertoire où se trouve ces librairies.
Sinon, je ne vois pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
23 avril 2006 à 12:26
Ouvres une console et vérifies que les chemins de mysql sont présents : SET ou SET PATH.
Sinon regardes dans les readme de ton installation, il faut peut être rajouter des chemins et quelques variables dans l'environnement à la main : Bureau->Poste de Travail->Propriétés->Avancées->Variables d'environnement, modifies et rédemarres.
0
Oeil_de_taupe Messages postés 150 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 16 février 2009
23 avril 2006 à 14:38
Avec les APIs MySQL une DLL est livrée.
Avec cette DLL un .h et un .lib. Tu as bien inclus le .h mais j'ai l'impression que tu as oublié d'ajouter le lib, ce qui fait que il y a un problème au linkage.

Donc il suffit d'ajouter le lib avec "#pragma comment(lib, 'lenomdelalib.lib')" et ne pas oublier d'ajouter ce fichier lib dans le dossier de ton compilateur qui contient tous les .lib

Voila ce que j'inclus quand j'utilise l'API MySQL

//Pour la connection à MySQL
#include<windows.h>
#include<mysql/mysql.h>
#pragma comment(lib, "libmysql.lib")
0
Rejoignez-nous