[c++] Le SQL en c++

Fermé
Capry - 10 avril 2009 à 19:39
 anonymous - 27 févr. 2011 à 16:35
Bonjour,
Je programme en c++ depuis un certain temps et j'aimerais pouvoir utiliser le SQL dans mes programmes.
J'ai donc télécharger sur le site officiel du SQL la librairie pour le c++, mais voilà, lorsque je test les exemples donnés il y a des erreurs.

Voici mon code :

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>
#include <driver/mysql_public_iface.h>
#include <driver/mysql_driver.h>

using namespace std;

int main(int argc, char **argv)
{
 sql::Driver* driver;
 sql::Connection *con;
 sql::Statement *stmt;
 driver = get_driver_instance();
 con = driver->connect("tcp://127.0.0.1:3306", "Capry", "mdp");
 if (!con)
 {
  cout<<"Impossible de se connecter"<<endl;
 }
 else
 {
  cout<<"Connecter"<<endl; 
 }
 stmt = con->createStatement();
 

 system("PAUSE");
 return EXIT_SUCCESS;
}



Mais lorsque je lance l'application, la console m'affiche "Connecter" mais un message d'erreur apparaît du style : "SQL.exe a rencontrer un problème et doit fermer".

En fait il n'apparaît pas si je ne met pas la ligne

 stmt = con->createStatement();


J'utilise un serveur local grâce à wamp, j'ai bien configurer les privilèges de sorte que l'utilisateur se connecte avec "Capry" comme pseudo et "mdp" comme mot de passe.

Je vous demande donc si vous avez une idée sur la source du problème.

Merci d'avance
Amicalement,
Capry
A voir également:

17 réponses

KéKeCest !!
11 avril 2009 à 20:57
Bonsoir,

Pour tout dire je connais mal le C++.

Toutefois :

stmt = con->createStatement();

> createStatement() est appelé ici sans arguments - il attend une requête SQL normalement du type createStatement("SELECT ... FROM...") par exemple.

salutations.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
11 avril 2009 à 22:57
Non je ne crois pas que le constructeur de classe attende quelconque argument. Merci de ta réponse quand même :S .
0
KéKeC'est !!
12 avril 2009 à 09:54
Bonjour,

"Non je ne crois pas que le constructeur de classe attende quelconque argument"

Faux :

En C++, createStatement() est peut être un constructeur sans arguments mais la classe possède une surcharge qui attend un argument de type "chaine de requête SQL - alors peut être que vos exemples viennent de Java car en effet dans ce langage il y a bien surcharge de constructeurs pour cette classe...

Exemple en C++ qui montre un appel du constructeur avec passage de paramètres :

https://www.dreamincode.net/forums/topic/30799-how-to-connect-c-with-oracle/

-->
blabla...
............................................................
stmt = conn->createStatement(sqlString);
............................................................
resultSet = stmt->executeQuery();
...........................................................
stmt->closeResultSet(resultSet);
...........................................................
conn->terminateStatement(stmt);

L'intérêt d'un createStatement est de littéralement "préparer une requête" sinon j'en vois pas l'intérêt.

Renseignez vous et relisez votre cours C++ sur les fonctions ODBC s'il vous plait car ça m'intéresserait d'avoir des infos. sur cette classe - je n'ai pas vu de didacticiel en fonctions ODBC pour C++ sur le Net.

amicalement.
0
KéKeC'est !!
12 avril 2009 à 10:07
Re,

Je vois que vous utilisez une API MySql que je ne connais pas - privilégiez peut être les fonctions standards ODBC comme une internaute vous l'avez proposé.

http://www.commentcamarche.net/forum/affich 11575088 c probleme du driver sql?#8

amicalement.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 10:46
Non en c++ j'ai déjà essayé on ne peut pas faire :

stmt = con->createStatement(std::string("USE database"));

Le compilateur répond que la seule fonction possible est : virtual sql::Statement* sql::Connection::createStatement().

Une requête ne peux pas être directement être envoyée par le constructeur. De plus dans les exemples il indique bien de faire

stmt = con->createStatement();

et plus tard :


stmt = execute->createStatement("USE database");
0
KéKeC'est !!
12 avril 2009 à 11:14
Re,

bizarre vos fonctions....

1-
Pouvez vous nous donner un lien vers la documentation fournie avec votre API MySql s'il vous plait ??..

Ça n'a pas l'air standard car que ce soit en Java ou en ODBC MySql standard C++ (fourni par MySql AB), createStatement() a communément une surcharge de constructeur comme je vous l'ai indiquée qui permet de passer les ordres SQL directement en statement mais bon ça n'explique pas pourquoi votre statement plante à l'exécution avec votre API.

2-

stmt = execute->createStatement("USE database");

... Ça m'étonne beaucoup et c'est surement une erreur de votre part en recopiant votre code fourni car ça serait plutôt ceci dans votre cas en suivant la logique imposée par vos fonctions MySql :

stmt = con->createStatement();
resultSet = stmt->executeQuery("USE database");

Dans tous les cas je vais me renseigner - quel est l'éditeur de votre API MySql utilisée ici svp ?..

Merci et a+.
0
KéKeC'est !!
12 avril 2009 à 11:29
Re,

OK pour le createStatement - en C++ ODBC MySql de chez MySql AB : on passe les ordres SQL dans le prepareStatement()....

J'ai relu votre source :

Je pense que vous mélangez des fonctions associées à votre ancienne API et l'API officielle et ça plante après le driver.

Donc :

1-
Virez les include associés à votre ancienne librairie et gardez mysql_driver.h de chez MySql AB - ça peut en effet poser des conflits.

2-
Utilisez plutôt get_mysql_driver_instance(); ==> ça vient peut être de là je pense.

Sources et examples : http://forge.mysql.com/wiki/Connector_C++#Getting_Started:_Usage_Examples

amicalement.
0
KéKeC'est !!
12 avril 2009 à 12:07
Re,

Avec l'ensemble des éléments donnés et en me basant sur les exemples fournis par la doc. de MySql AB, votre code pourrait être le suivant et il n'y a aucune raison que ça plante encore (du moins si vous avez bien installée le bon connecteur) :

(les mises à jour significatives sont en gras)

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>

#include <driver/mysql_driver.h>

using namespace std;

int main(int argc, char **argv)
{
sql::mysql::MySQL_Driver *driver;
sql::Connection	*con;
sql::Statement	*stmt

driver = sql::mysql::get_mysql_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "Capry", "mdp");

 if (!con)
 {
  cout<<"Impossible de se connecter"<<endl;
 }
 else
 {
  cout<<"Connecter"<<endl; 
 }

stmt = con->createStatement();
stmt->execute("USE DATABASE");

 
delete stmt;
delete con;


 system("PAUSE");
 return EXIT_SUCCESS;
}
0
Note :

C'est gentil à celui de mettre un UP à ce message mais :

stmt = execute->createStatement("USE database");

--> c'est complètement faux (voir mon message suivant) car ne renvoie pas un objet statement.

Merci quand même de nous aider de cette façon.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 12:28
merci pour tes réponses,

Je pense que ton code pourrait marche, mais lorsque je l'insère voilà l'erreur du compilateur :

[Linker error] undefined reference to `_imp___ZN3sql5mysql25get_mysql_driver_instanceEv'

A quoi ce peut-être dû ?
0
KéKeC'est !!
12 avril 2009 à 12:48
Re,

Le compilateur a bien trouvé vos include.

Mais là c'est un simple problème au niveau du "Linker" du compilateur (dernière phase de la compilation) --> il faut lui indiquer une référence à la bonne librairie (.lib) et non plus la librairie associée à votre ancienne API.

Si vous utilisez Visual Studio :

- Propriétés du projet.
- Propriétés de Configuration/Linker/Input.
- Ajouter dans Additional Depedencies le nom de votre librairie .lib associée à votre connecteur MySql fourni et que vous avez installé sur votre machine.

A+.
0
KéKeC'est !!
12 avril 2009 à 13:01
Re,

J'ai oublié aussi de vous dire qu'il faut aussi indiquer à votre compilateur comment trouver le répertoire de vos librairies .lib :

Visual Studio :

- Outils/Options.
- VC++ Directories.
- Sélectionner les "Libraries Files" dans le menu déroulant.
- Enfin, entrez une référence au chemin d'accès vers la libraire où le compilateur trouvera la .lib comme je vous l'ai expliqué dans mon message précédent.

Note
: par exemple, moi cette librairie s'appelle libmysql.lib mais... c'est une librairie pour du langage C (:>) ... et oui ça date un peu.
0

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

Posez votre question
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 13:19
D'accord, moi ma librairie c'est "mysqlcppconn.lib" mais le problème c'est que je suis sous dev c++ et ce n'est pas la même interface :S.
0
KéKeC'est !!
12 avril 2009 à 13:52
Re,

(....) si tu a pu modifier tes références vers tes include, ça devrait pas poser de problèmes pour tes .lib non..??....

Copie ton mysqlcppconn.lib dans le dossier lib de DevC++, celui-ci se trouvant (normalement) en C:\Dev-Cpp\lib.

Puis, Projets/Options du Projet :

- Onglet Paramètres.
- Éditeur de liens --> Ajouter Fichier --> Tu sélectionnes donc ta mysqlcppconn.lib qui sera utilisée pour la compilation.

Essaye de recompiler ensuite.

amicalement.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 14:09
eh bien en fait ça je l'avais déjà fait, donc forcement il me donnent la même erreur :S.
0
KéKeC'est !!
12 avril 2009 à 14:12
Re,

Pas possible (:>).
Erreur à quel niveau stp .. à la compilation ou à l'exécution ?.

SI c'est à la compilation, on va faire autrement.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 14:14
bah à la compilation,
Il y a toujours le :

[Linker error] undefined reference to `_imp___ZN3sql5mysql25get_mysql_driver_instanceEv'
dû au mysql_driver
0
KéKeC'est !!
12 avril 2009 à 14:35
Re,

1-
Code en entête de ton code ceci :

#pragma comment(lib,"mysqlcppconn.lib")

2-

Ajoute l'option -lcomdlg32 aux options du linker.

Ça permet de forcer le compilateur à utiliser la librairie désignée dans le #pragma.

3- Recopie ton code et envoie le nous.

Essaye de recompiler - je vais voir si je peux trouver d'autres infos sur cette librairie.

A+.
0
KéKeC'est !!
12 avril 2009 à 14:40
Re,

J'oubliais :

mysqlcppconn.lib --> il faut copier la nouvelle librarie qui a été livrée à l'installation de ton driver MySql ODBC C++ tel qu'il fourni par MySql AB - pas l'ancienne libraire de ta vieille API qui plantait !!...

En effet, cette libraire a peut être le même nom que l'ancienne mais n'a rien à voir..
0
KéKeC'est !!
12 avril 2009 à 14:46
Re,

Comme ça ça sera fait :

Copie aussi la mysqlcppconn.dll fournie dans ton package connecteur MySql (le plus récent..) dans System32.

Sinon ça posera des problèmes à l'exécution - mais bon déjà ça compile pas à la base.

(j'iu une sainte horreur de DevC++... jamais pu l'utiliser sous Vista).
0
KéKeC'est !!
12 avril 2009 à 15:03
Re,

Je me suis renseigné (hé hé..) :

Je crois que c'est toi sur ce forum (:>).. et t'avais copié mysqlcppconn.lib de ta vieille API...

https://openclassrooms.com/forum/sujet/sql-probleme-du-driver-93623

Donc :

1-
"mysqlcppconn.lib --> il faut copier la nouvelle libraire qui a été livrée à l'installation de ton dernier driver MySql ODBC C++ tel qu'il fourni par MySql AB - pas l'ancienne libraire de ta vieille API qui plantait à l'époque !!... "

--> Recherche dans le package d'install. de ton nouveau driver MySql, récupère la bonne .lib et recommence stp.

amicalement.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 15:01
Le fait d'ajouter le bout de code avec "pragma" ne change rien. Mais je n'ai pas compris ton second message :

mysqlcppconn.lib --> il faut copier la nouvelle librarie qui a été livrée à l'installation de ton driver MySql ODBC C++ tel qu'il fourni par MySql AB - pas l'ancienne libraire de ta vieille API qui plantait !!... 


Tu veux dire qu'il faut que re remplace dans le répertoire "lib" de dev, un fichier nommé "mysqlcppconn.lib" par le nouveau fichier "mysqlcppconn.lib" qui était dans le pack que j'ai télécharger, c'est ça ?
0
KéKeC'est !!
12 avril 2009 à 15:09
Re,

En fait, tu dois utiliser la mysqlcppconn.lib de ton API qui marchait pas.

> Il faut donc copier la nouvelle .lib qui doit avoir le même nom.
0
KéKeC'est !!
12 avril 2009 à 15:26
Re,

Vérifie que c'est pas cette libraire en fait (MySql AB) :

> mysqlclient.lib

ici --> C:/Progams/MySQL/MySQL Server 5.1/lib/opt/mysqlclient.lib

mysqlcppconn.lib je suis vraiment pas sur que ce soit la bonne libraire officielle.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 15:27
Toujours le même problème, de imp_ etc...
Mais étant donnée que les deux fichiers lib faisaient le même poids je pense que c'était les même donc ça n'a pas changé grand chose...
0
KéKeC'est !!
12 avril 2009 à 15:42
Re,

J'installe le connecteur su ma bécane, je teste et je regarde.

a+.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 15:55
Merci beaucoup ^^
0
KéKeC'est !!
12 avril 2009 à 16:14
Re,

J'ai téléchargé et installé le connecteur MySql Connector C++ 1.0.4.0 ici :

> https://dev.mysql.com/downloads/connector/cpp/1.0.html#Windows

Librairies :

Les .lib --> C:\Program Files\MySQL\MySQL Connector C++ 1.0.4.0\lib\opt
Les include --> C:\Program Files\MySQL\MySQL Connector C++ 1.0.4.0\include

Et j'ai bien utilisé la bibliothèque mysqlcppconn.lib.

Ensuite, ton code compile OK sur Visual Studio.

Si toi ça compile pas, c'est un problème de DevC++.

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>

// J'ai mis toutes les librairies... (:>)

#include <mysql_connection.h>
#include <mysql_driver.h>

#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>

using namespace std;

int main(int argc, char **argv)
{
sql::mysql::MySQL_Driver *driver;
sql::Connection	*con;
sql::Statement	*stmt;

driver = sql::mysql::get_mysql_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "Capry", "mdp");

 if (!con)
 {
  cout<<"Impossible de se connecter"<<endl;
 }
 else
 {
  cout<<"Connecter"<<endl; 
 }

stmt = con->createStatement();
stmt->execute("USE DATABASE");

 
delete stmt;
delete con;


 system("PAUSE");
 return EXIT_SUCCESS;
}
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 16:34
J'ai recommencé à zero et suivit ta procédure.
Si je met les

#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>


Le compilateur va me donner plein de
48 C:\Program Files\MySQL\MySQL Connector C++ 1.0.4.0\include\cppconn\config.h conflicting declaration 'typedef char int8_t' 
27 C:\Dev-Cpp\include\stdint.h 'int8_t' has a previous declaration as `typedef signed char int8_t' 


ou de
63 C:\Program Files\MySQL\MySQL Connector C++ 1.0.4.0\include\cppconn\config.h declaration of `typedef long int int32_t' 
31 C:\Dev-Cpp\include\stdint.h conflicts with previous declaration `typedef int int32_t' 



Mais si je ne les mets pas j'ai toujours le même
  [Linker error] undefined reference to `_imp___ZN3sql5mysql25get_mysql_driver_instanceEv' 


Le problème viendrait-il donc de dev ??
0
KéKeC'est !!
12 avril 2009 à 16:48
Re,

Tu peux les virer en effet car ça pré-compile si tu les enlèves.

Toutefois, télécharge le driver MySql C++ d'après le lien que je t'ai donné plus haut, réinstalle le et recompile en pointant vers les libraires que je t'ai signalées.

La version de ton driver est peut être trop vieille et certaines fonctions ne passent pas.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 17:05
bah justement j'ai tout refait d'après le lien que tu m'as donné, j'ai téléchargé le fichier .exe, je l'ai installé.
J'ai donné au compilateur de dev les chemins vers le répertoire d'inclusion et celui des lib, mais toujours la même erreur -_- . je désespère :S .
0
KéKeC'est !!
12 avril 2009 à 18:02
Re,

Bah on va bien finir par trouver.

Quant à chez moi ça ne marche pas cette libraire - ça plante à l'exécution mais je n'ai peut être pas la bonne version de MySql.

> Ouaip au fait il faut une version de MySql > 5.1.x.x pour que ce connecteur MySql fonctionne alors il faut déjà peut être que tu obtiennes la dernière version de MySql.

Autre chose : essaye d'ajouter quand meme -lmysql en paramètre du linker de Devc++.

a+.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 18:24
Comment je fais pour obtenir la dernière version de MySQL ??

Pour le plantage au démarrage c'est que j'avais quand je mettais juste "driver" au lieu de "sql_driver" et le fait de rajouter -lmysql ne change rien non plus.
décidément cette librairie pose vraiment problème :S.
0
KéKeC'est !!
12 avril 2009 à 18:54
Re,

Euhh....bah :

http://downloads.mysql.com/docs/connector-cpp-en.a4.pdf

C'est la doc. du connecteur MySql de chez AB MySql.

Apparemment, il compile seulement sur Visual Studio 2003 et + sur Windows (voir page 5)...

Ré-essaye donc quand même ton vieux code (notamment en reprenant get_driver_instance()) avec ces modifs. (changements d'include) pour voir déjà si ça compile car ça m'étonne que t'ai pu compiler auparavant avec DevC++ :

#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
#include <stdexcept>

#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>

using namespace std;

int main(int argc, char **argv)
{
 sql::Driver* driver;
 sql::Connection *con;
 sql::Statement *stmt;
 driver = get_driver_instance();
 con = driver->connect("tcp://127.0.0.1:3306", "Capry", "mdp");
 if (!con)
 {
  cout<<"Impossible de se connecter"<<endl;
 }
 else
 {
  cout<<"Connecter"<<endl; 
 }
 stmt = con->createStatement();
 

 system("PAUSE");
 return EXIT_SUCCESS;
}
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 19:00
Euh,
Si je met ton code il me disent que LIBMYSQL.dll est introuvable. C'est quoi cette dll ?
EDIT : A pardon je l'ais trouver dans les dossiers de wamp. Mais mantenant l'application plante et ce dès que je rajoute la ligne :

driver->connect("tcp://127.0.0.1:3306", "Capry", "mdp");

Une idée ?
0
Re,

Donc ça compile pour le moment apparemment - ce serait bien que tu sois un peu plus "explicite" dans tes messages stp.

Libmysql.dll tu la trouvera normalement dans le répertoire bin d'installation de MySql Server - librarie fournie à l'install.

Copie la et met la dans C:\Windws\System32.

La encore ca m'étonne qu'il est besoin de cette .dll alors que t'en avais pas besoin auparavant mais bon...
0
Re,

1-
Ça compile avec DevC++ en utilisant le connecteur MySql C++ alors qu'ils disent le contraire dans la doc.

2-
T'a besoin de libmysql.lib et libmysql.dll pour faire fonctionner ton truc ...

Je pense que tu ferais mieux de "faire tourner le cône ke tu fumes en ce moment.."... (:>).
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 19:18
Et il c'est quoi le répertoire d'installation de MySQL Server ? Si tu parle d'un répertoire qui serait dans celui de Wamp (le serveur local), je l'ai mis à la racine du dossier de mon application mais il plante :

"Le programme doit fermer blabla"

Et ce à la connexion, donc si je rajoute la ligne :

driver->connect("tcp://127.0.0.1:3306", "Capry", "mdp");

Si tu ne parlais pas d'un dossier de Wamp au sujet de MySQL Server, alors où peut-on le télécharger parce qu'a priori je ne l'ai pas fais :S...
0
MySql est installé sur Wamp - tu trouves ta libmysql.dll dans les répertoires de Wamp mais tu m'avais pas dis que t'avais Wamp - j'ai juste supposé que t'avais au moins MySql d'installé.

Je t'ai donc indiqué le répertoire de MySql Server sans wamp mais dans les deux cas, ils fournissent cette dll.

Je m'étonne qu'on puisse compiler ton C++ avec libmysql.lib mais on est pas à l'abri de "faits inexpliqués" dans ce bas monde.

Maintenant ça plante sur driver->connect("tcp://127.0.0.1:3306", "Capry", "mdp") alors que ça plantait pas avant et qu'on a repris quasi-strictement le même code....

Pour mettre à jour MySql sur Wamp, va sur l'icone en bas à droite puis répertoire MySql, version et "Get More"..
C'est un lien sur le site de Wamp pour télécharger la dernière version de MySql.
0
Capry Messages postés 21 Date d'inscription mardi 17 mars 2009 Statut Membre Dernière intervention 12 avril 2009
12 avril 2009 à 20:10
Ah cette librairie est TRÈS GALÈRE !
C'est pourquoi je viens de trouver un lien très intéressant vers un tuto du SDZ (j'avais pourtant regardé sur le site mais j'ai dû le loupe :S).
Apparemment il y a une autre libraire : très simple d'utilisation, il suffit de faire 5-6 clics de souris dans dev et tout l'API MySQL est installé ^^ !!
En d'autre mot voici le lien :

http://www.siteduzero.com/tutoriel-3-34984-utiliser-l-api-mysql-dans-vos-programmes.html

Je le conseille VIVEMENT à tous ceux qui aurais aussi un problème avec l'API que j'essayais d'inclure jusqu'à maintenant. J'ai dû y passer 10 min à tous casser et je peux déjà me connecter à la base sans aucun problème, et le tuto explique l'installation sur les trois principaux IDE (code blocks, visual et dev). Voilà, encore un grand merci à vous pour vos nombreuses et rapides réponses.

Cordialement

Capry
0
Re,

C'est très intéressant en effet mais libmysql.lib c'est pour développer en C ANSI... c'est pour ça que ça ne peut compiler en C++ et ça ne résout en rien notre problème avec les API C++ de MySql AB.

CQFD.

_________________________________________________________________________
"... Hallucinogènes ou en injection ?..."
0
Salut,

Je réouvre un post un peu vieux ^^ mais pour vous faire part de mon expérience qui peut peut être vous aider : sous codes::blocks ou d'autres freeware qui utilisent les portages de GCC sur windows (genre mygwin) ça arrive souvent que le compilateur C++ dans les options soit mal configuré et soit en fait le compilateur C. Or je ne sais par quel miracle il ne gueule absolument pas quand il voit tous les mots clés du C++, il compile sans broncher, mais au moment de l'édition de lien ça chie.

Je sais pas si c'est ce qu'il t'es arrivé, mais c'est peut être ça, surtout que ta deuxième librairie est une librairie C, ce qui expliquerait pourquoi il n'y avait plus d'erreur. Si votre configuration semble bonne, que vous avez inclus toutes les librairies et que des exemples simples font ce genre d'erreur au linkage, VERIFIEZ que 1) vous dites bien à l'IDE que vous voulez compiler en C++ (genre dans un projet, cocher C++ et pas C quoi) et même que 2) dans la configuration des exécutables de votre IDE, les compilateurs correspondent (par exemple si l'IDE utilise le même exécutable pour le compilateur C et le compilateur C++ ça risque de ne pas être bon)

Voili voilou, bonne prog ;)
0