Utilisation des fonction de MySQL - C++

ViPHP
ViPHP | 649 Messages

27 déc. 2005, 18:44

Salut,

J'essaie de me connecter à mysql via c++, j'ai fait toutes les includes nécessaires, l'importation de librairies mais chaque fois que j'essaie d'utiliser une fonction, j'obtiens cette erreur: undefined reference to `mysql_real_connect'@4 et ce, pour chaque fonction.

J'allège le code:

Code : Tout sélectionner

#define USE_OLD_FUNCTIONS #include <windows.h> #include <stdio.h> #include <string.h> #include <iostream.h> // ce chemin est sans doute à adapter #include "C:\Program Files\MySQL\MySQL Server 5.0\include\mysql.h" //------------------------------------------------------------ static void exiterr(int exitcode); //------------------------------------------------------------ MYSQL mysql; MYSQL_RES *res; MYSQL_ROW row; //------------------------------------------------------------ int main(){ unsigned int i = 0; if (!(mysql_connect(&mysql,"localhost","username","password"))) { cout<<"Sorry..."; } }
Je sais que PHPFrance est principalement pour le php, mais comme la communauté de cppfrance n'est pas très rapide ni efficace avec des réponses du genre "Bizarre oui, je sais pas quoi faire...", je me suis retourné vers le forum "Autres" :D
Image

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

27 déc. 2005, 22:12

lors de la compilation, tu link bien vers le dossier contenant ta librairie mysql ?

ViPHP
ViPHP | 649 Messages

27 déc. 2005, 22:17

J'ai vu sur le site de mysql ce truc, regarde ce que j'ai mis:
-Ldir_C:\Program Files\MySQL\MySQL Server 5.0\bin_lmysqlclient
Il trouve bien le répertoire, m'affiche les erreurs quand même.

Mais je ne suis pas sûr si cette structure est bonne.

Et, j'utilise Dev-cpp. J'ai mis ça dans "Options", "Compiler options", est-ce correct?
Image

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

27 déc. 2005, 22:27

Pour moi l'option serait tout simplement -LC:\Program Files\MySQL\MySQL Server 5.0\bin_lmysqlclient, en supposant que dans C:\Program Files\MySQL\MySQL Server 5.0\bin_lmysqlclient tu trouves bien des fichiers .dll ou .a.

ViPHP
ViPHP | 649 Messages

27 déc. 2005, 22:34

J'ai un autre problème, le linker me donne ces erreurs:
g++: Files\MySQL\MySQL: No such file or directory
g++: Server: No such file or directory
g++: 5.0\: No such file or directory
Il décompose le chemin à chaque espace et là, j'ai aucune idée pourquoi :(
Image

Mammouth du PHP | 19672 Messages

28 déc. 2005, 10:01

à vue de nez, c'est parce que ton système ne supporte pas les espaces dans les noms de répertoires/fichiers : essaye en mettant Mysql%20Server%205.0
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

28 déc. 2005, 10:19

J'aurais plutot fait "anti-slash"+"espace" que %20, en est pas en http :langue:

Mammouth du PHP | 19672 Messages

28 déc. 2005, 10:52

lol, ben j'envoyais une idée, je n'ai jamais codé en C++, ni même en C tout court et je n'ai aucune idée de la syntaxe correcte à utiliser en l'occurence :langue:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 649 Messages

28 déc. 2005, 19:03

Bon d'accord pour les espaces, il faut mettre des _, c'est réglé pour ça.

Par contre, il trouve le répertoire mais j'obtiens toujours l'erreur, ce qui signifie que je n'indique pas le bon répertoire. J'indique le répertoire MySQL Server 5.0, le principal dans le quel on trouve bin, scripts, sql-bench etc.

Si je me fie à cette syntaxe -Ldir_path-lmysqlclient trouvée sur http://dev.mysql.com/doc/refman/5.0/fr/link-errors.html, on voit qu'il ajoute -l pour indiquer le chemin de mysqlclient. Moi, je trouve le répertoire MySQL Server 5.0, pas de répertoire Mysql Client... mais il doit bien y en avoir un, sinon comment les requêtes serait exécutées?

Donc ma question: Où est le répertoire de mysql Client?
Image

ViPHP
ViPHP | 2144 Messages

28 déc. 2005, 19:13

Ca fait un bout de temps que je n'ai plus fait d'sql embedded sous C (et c'était un serveur Sybase)
Mais as tu bien installé la partie client de mysql ? Sous windows tu dois avoir au moins une dll? et normalement ton client n'a pas besoin d'accéder au serveur mysql (vu qu'en principe le serveur est rarement sur la machine client)

ViPHP
ViPHP | 649 Messages

28 déc. 2005, 19:16

Là j'ai regardé, je trouve un mysqlclient.lib... mais pas de dll en vue... faut le télécharger?
Image

ViPHP
ViPHP | 2144 Messages

28 déc. 2005, 20:22

oui, ça doit être ça, regardes du côté de la doc, il doit bien avoir un exemple de connexion.

ViPHP
ViPHP | 649 Messages

28 déc. 2005, 20:25

Alors là, t'inquiètes, j'ai dû dévaliser le web de tous ses exemples dans le domaine :oops:, rien à faire... Ils disent d'utiliser la commande mysq-config --libs pour trouver le bon répertoire et selon moi, ils devraient plutôt dire où trouver cette commande... menfin, je vais délaisser mon apprentissage du C++ pour retourner à mes codes PHP, là au moins j'y comprends quelque chose :wink:
Modifié en dernier par alexbad le 28 déc. 2005, 20:25, modifié 1 fois.
Image

ViPHP
ViPHP | 2144 Messages

28 déc. 2005, 20:25

http://perso.wanadoo.fr/philippe.baucou ... instr.html

C'est du C, mais bon, ça doit pas être très différents