Libmysqld.a manquante?!

titus55555 Messages postés 11 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 15 septembre 2005 - 14 sept. 2005 à 12:40
kazoumoulox Messages postés 14 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 5 juin 2006 - 13 avril 2006 à 11:22
Voilà j'y suis, c'est en désespoir de cause que je laisse un message dans cette partie du forum. voilà mon pb :
je dois créer une appli (en C++) portable sous xp qui manipule une bases de données (ajout, affichage...). J'ai donc téléchargé Dev-C++ et le devpack Mysql.
D'après la doc mysql, il faut que j'utilise un serveur embarqué pour que mon appli fonctionne.
J'écris donc mon prog et je compile.
Or lorsque je compile j'obtiens le message d'erreur suivant :

[Linker error] undefined reference to [mailto:`mysql_server_init@12' `mysql_server_init@12']
[Linker error] undefined reference to [mailto:`mysql_server_end@0' `mysql_server_end@0'] (non ce ne sont pas des adresses eMail)

Sur la doc il parle d'une librairie libmysqld.a pour le serveur embarqué, je vais donc voir dans mon rep lib de Dev-C++ pour la lier au projet, et bien sûr elle ne s'y trouve pas.
Je télécharge alors une source Mysql sans installeur pour extraire la lib (et je la trouve) mais j'ai beau :
-copier la libmysqld.lib et la lier
-copier la lib mysqlserver.a (que j'ai pris dans le rep Embed de la source)
-copier la dll mysqld.dll dans le rep dll de dev et dans le rep de mon prog
-copier les bibliothèques

rien n'y fait, j'ai tjrs la même erreur.
je sait plus trop quoi faire
si qlqn détient la réponse à mon pb je lui en serait plus que reconnaissant

13 réponses

cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
14 sept. 2005 à 15:07
As-tu bien rajouté -lmysqld à l' éditeur de liens de devCpp????

Si ce n'est pas le cas : projet/options du projet/parametres/éditeur de liens;

Dans l' éditeur de lien tu rajoute -lmysqld ;


event.Voila();
@+;
ROOT_DIEU Alias satellite34
0
titus55555 Messages postés 11 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 15 septembre 2005
14 sept. 2005 à 15:40
c'est une des première chose que j'ai faite oui, il me dit qu'il ne trouve pas -lmysqld
donc c'est bien la lib qui est manquante
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
14 sept. 2005 à 16:07
Erf, je m'en doutais(kan meme!);

Je viens de faire un test ,et aucun soucis de linkers, en installant le devPack libmysql ;

voici la liste et les chemin des fichiers de cette lib dans l'arbo de devcpp

bin\libmysql.dll

include\mysql\config-netware.h

include\mysql\config-os2.h

include\mysql\config-win.h

include\mysql\errmsg.h

include\mysql\mysql.h

include\mysql\mysqld_error.h

include\mysql\mysql_com.h

include\mysql\mysql_embed.h

include\mysql\mysql_time.h

include\mysql\mysql_version.h

include\mysql\my_alloc.h

include\mysql\my_dbug.h

include\mysql\my_getopt.h

include\mysql\my_global.h

include\mysql\my_list.h

include\mysql\my_pthread.h

include\mysql\my_sys.h

include\mysql\m_ctype.h

include\mysql\m_string.h

include\mysql\raid.h

include\mysql\typelib.h

lib\libmysql.a

lib\libmysql.def

examples\libmysql\mysql.cpp

examples\libmysql\mysql.dev

examples\libmysql\official\connect_test.c

examples\libmysql\official\deadlock_test.c

examples\libmysql\official\insert_test.c

examples\libmysql\official\list_test.c

examples\libmysql\official\mysql_client_test.c

examples\libmysql\official\select_test.c

examples\libmysql\official\showdb_test.c

examples\libmysql\official\ssl_test.c

examples\libmysql\official\thread_test.c

et donc, je ne vois aucun libmysqld.a en revanche lib\libmysql.a est présent;

-lmysql dans le linker et ca roule;

event.Voila();
@+;
ROOT_DIEU Alias satellite34
0
titus55555 Messages postés 11 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 15 septembre 2005
15 sept. 2005 à 08:40
les fonction "mysql_server_init" et "mysql_
0

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

Posez votre question
titus55555 Messages postés 11 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 15 septembre 2005
15 sept. 2005 à 08:54
oula apparement y'a eu un pb là.
je disais : les fonctions "mysql_server_init" et "mysql_server_end" marche chez toi?
j'ai la version Dev-C++ 5 beta 9 release (4.9.9.2), se peut-il que le pb vienne de la version de dev. en effet lorsque je dl le devpack mysql, je n'ai pas autant de biblio que toi.
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
15 sept. 2005 à 16:21
Bonjour,

je suis allé voir la doc de mysql et oui, tu as raison, il te faut la lib du serveur embarqué libmysqld.

Donc, suivant les instructions de la doc, tu linke -lmysqld a ton projet + -lmysql bien entendu (il faut bien sur que libmysqld.a soit dans le rep /lib/, ou alors, encore mieux, tu va le chercher a la main avec l'editeur de liens de devcpp.Je ne pense pas que la version est une incidence;

Sur le site de ref mysql il ya un exemple simplissimme d' utilisation de serveur embarqué;
réfere toi-y et tiens nous au courant.
http://dev.mysql.com/doc/mysql/fr/libmysqld-example.html


event.Voila();
@+;
ROOT_DIEU Alias satellite34
0
titus55555 Messages postés 11 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 15 septembre 2005
16 sept. 2005 à 09:54
ben le truc c'est que j'ai déjà fait tout ça... et c'est bien ça le pb, il ne devré pas y avoir d'erreur de linkage puisque j'ai mis libmysqld.lib dans le dossier lib de dev-c++ et que je l'ai lié au projet.


Dev-C++ devrait trouver ces fonctions puisque je les ai vu dans le fichier libmysqld.def fournit avec mysql.


Dernière chance : le pb vient p-e du fait que libmysqld est un .lib et pas un .a. Cela influe p-e, j'en sais rien, mais si c'est le cas il faut que je convertisse le .lib en .a et je ne sais pas comment faire.


Une idée
Merci pour vos réponses
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
16 sept. 2005 à 11:14
msn ou comédie (-;


event.Merci();
@+;
ROOT_DIEU Alias satellite34
0
righar Messages postés 2 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 10 octobre 2005
9 oct. 2005 à 03:58
En fait j'ai eu le meme probleme que toi, et j'ai finalement trouve la
solution :p ; mysql.h definit "STDCALL" en tant que stdcall_ sous
windows (VC++), et rien pour unix.



Pour regler ce problem on va faire croire aux headers de mysql qu'on est sous Cygwin.



Tout d'abord, rajoute "-D__CYGWIN__" dans les options de compilation de ton projet, de cette facon mysql.h configurera les stubs de fonctions correctement. Ensuite, assure-toi que tu inclues mysql.h AVANT les headers de windows si
tu les utilises quelque part dans ton projet (ex. <windows.h>
<winsock.h> etc..), parce que windows definit les STDCALL
differemment de windows. mysql en premier, donc.



Ensuite, RECOMPILE TON PROJET (important), cette fois ca compilera et linkera correctement :p



Vivement le jour ou on pourra recompiler mysql sous mingw sans les prises de tete.
0
titus55555 Messages postés 11 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 15 septembre 2005
10 oct. 2005 à 09:06
Merci pr ta réponse righar, j'ai essayé de suivre ta démarche mais ça n'a pas marché pour moi.
Lorsque je mets mysql.h avant <winsock.h>, j'ai cette erreur de compilation dans <mysql_com.h> :

SOCKET does not a name type
SOCKET was not declared in this scope
...
0
righar Messages postés 2 Date d'inscription mercredi 12 mai 2004 Statut Membre Dernière intervention 10 octobre 2005
10 oct. 2005 à 19:13
Hmmm.. peut-etre etait-ce -D_CYGWIN_ (juste un "_")

Sinon il y a la possibilite de recompiler de cette facon:



1. Installer Cygwin dans c:\cygwin

2. Installer Mingw dans c:\mingw

3. Change la variable d'environnement PATH sous windows pour qu'elle
contienne PATH=C:\MINGW\bin;c:\CYGWIN\bin (note : MINGW doit venir en
premier!)

4. Sous Cygwin change ton /etc/profile pour qu'il contienne /cygdrive/c/mingw/bin dans le path AVANT le /sbin;/bin de cygwin

5.Recompile mysql (sous Cygwin) avec ces options : ./configure
--with-embedded-server --with-pthread (ou est-ce --with-pthreads?)

6.Fait "make install"



Maintenant tu peux compiler tes programmes sous cygwin, mais il va
utiliser le compilateur de mingw a la place :) donc n'aura pas besoin
de cygwin1.dll pour lancer les applications.



Bien sur, si ca ne te derange pas d'avoir besoin de cygwin1.dll tu n'as
pas besoin d'utiliser cygwin du tout (ca simplifiera les choses!).
0
titus55555 Messages postés 11 Date d'inscription mardi 13 septembre 2005 Statut Membre Dernière intervention 15 septembre 2005
11 oct. 2005 à 15:03
Merci pr ta réponse mais en fait je trouve un peu lourd le fait de devoir installer 2 compilos , on m'a parlé de SQLite, je vais peut-être essayer de faire tourner mon appli là-dessus (si c'est moins prise de tête )
@+
0
kazoumoulox Messages postés 14 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 5 juin 2006
13 avril 2006 à 11:22
0
Rejoignez-nous