Page 1 sur 1
Utilisation des fonction de MySQL - C++
Posté : 27 déc. 2005, 18:44
par alexbad
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"

Posté : 27 déc. 2005, 22:12
par naholyr
lors de la compilation, tu link bien vers le dossier contenant ta librairie mysql ?
Posté : 27 déc. 2005, 22:17
par alexbad
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?
Posté : 27 déc. 2005, 22:27
par naholyr
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.
Posté : 27 déc. 2005, 22:34
par alexbad
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

Posté : 28 déc. 2005, 10:01
par Cyrano
à 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
Posté : 28 déc. 2005, 10:19
par naholyr
J'aurais plutot fait "anti-slash"+"espace" que %20, en est pas en http

Posté : 28 déc. 2005, 10:52
par Cyrano
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

Posté : 28 déc. 2005, 19:03
par alexbad
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?
Posté : 28 déc. 2005, 19:13
par iclo
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)
Posté : 28 déc. 2005, 19:16
par alexbad
Là j'ai regardé, je trouve un mysqlclient.lib... mais pas de dll en vue... faut le télécharger?
Posté : 28 déc. 2005, 20:22
par iclo
oui, ça doit être ça, regardes du côté de la doc, il doit bien avoir un exemple de connexion.
Posté : 28 déc. 2005, 20:25
par alexbad
Alors là, t'inquiètes, j'ai dû dévaliser le web de tous ses exemples dans le domaine

, 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

Posté : 28 déc. 2005, 20:25
par iclo
http://perso.wanadoo.fr/philippe.baucou ... instr.html
C'est du C, mais bon, ça doit pas être très différents