Connexion à une base de données MySql
Bonjour,
Je souhaite connecter mon programme c++ (dans Visual Studio Express 2012 pour Windows Desktop) à ma base de donnée MySql accessible sur un environnement virtuel dans VirtualBox (Apache-Php-MySql) via ce code source :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include<stdlib.h>
#include<iostream>
#include<mysql_driver.h>
#include<mysql_connection.h>
int main() {
sql::mysql::MySQL_Driver *driver;
sql::Connection *conn;
try {
driver = sql::mysql::get_mysql_driver_instance();
conn = driver->connect("tcp://192.168.1.100:3306","root","1234");
//// La connexion est ́etablie => on peut soumettre des requ^etes `a la BD// ....// .... requ^etes .....// lib ́erer la connexion
delete conn;
}
catch(sql::SQLException &e) {
std::cerr <<"# ERR: SQLException in "<< __FILE__;
std::cerr <<"("<< __FUNCTION__ <<") on line "<< __LINE__ << std::endl;
std::cerr <<"# ERR: "<< e.what ();
std::cerr <<" (MySQL error code: "<< e.getErrorCode ();
std::cerr <<", SQLState: "<< e.getSQLState () <<" )"<< std::endl;
}
return 0;
} |
mais en compilant, Visual Studio relève des erreurs à la sortie :
Code:
1 2 3 4 5 6 7 8 9
| 1>------ Début de la génération*: Projet*: MySqlCpp, Configuration*: Debug Win32 ------
1> Main.cpp
1>Main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: __thiscall sql::SQLString::~SQLString(void)" (__imp_??1SQLString@sql@@QAE@XZ) référencé dans la fonction _main
1>Main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: __thiscall sql::SQLString::SQLString(char const * const)" (__imp_??0SQLString@sql@@QAE@QBD@Z) référencé dans la fonction _main
1>Main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const & __thiscall sql::SQLException::getSQLState(void)const " (__imp_?getSQLState@SQLException@sql@@QBEABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@XZ) référencé dans la fonction __catch$_main$0
1>Main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) public: int __thiscall sql::SQLException::getErrorCode(void)const " (__imp_?getErrorCode@SQLException@sql@@QBEHXZ) référencé dans la fonction __catch$_main$0
1>Main.obj : error LNK2019: symbole externe non résolu "__declspec(dllimport) class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_driver_instance(void)" (__imp_?get_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ) référencé dans la fonction "class sql::mysql::MySQL_Driver * __cdecl sql::mysql::get_mysql_driver_instance(void)" (?get_mysql_driver_instance@mysql@sql@@YAPAVMySQL_Driver@12@XZ)
1>C:\Users\...\documents\visual studio 2012\Projects\MySqlCpp\Debug\MySqlCpp.exe : fatal error LNK1120: 5 externes non résolus
========== Génération*: 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ========== |
Je n'arrive pas à trouver la solution à ce problème. MySql étant libre, je le préfère à SQL Server dans mes apprentissages.
D'avance merci de votre aide
Historique des lib listées dans les répertoires de bibliothèques supplémentaire des propriétés du projet
Citation:
Envoyé par
Bousk
C'est un problème de linker, il faut link les libs de sql, les fichiers .lib, dans les propriétés du projet.
Merci Bousk.
Voici la liste des lib que j'avais déjà lié dans les répertoires de bibliothèques supplémentaires de mon projet c++ :
Code:
1 2 3
| C:\boost\boost_1_64_0\boost_1_64_0\libs
C:\Program Files %28x86%29\MySQL\MySQL Connector C++ 8.0\lib
C:\Program Files %28x86%29\MySQL\MySQL Connector C++ 8.0\lib\vs14 |
As-tu une idée ?
Merci d'avance
2 pièce(s) jointe(s)
Chemin d'accès au répertoire lib
Citation:
Envoyé par
Bousk
Y'a aucune lib dans ce que tu montres, ce sont juste des répertoires/dossiers/folders :weird:
Merci.
Je comprends mais il y a des fichiers dll dans l'une et des sources browser database dans l'autre. Cf ci-dessous :
Pièce jointe 496183
Pièce jointe 496184
Je n'y arrive pas.
Merci pour ton aide
Essais Visual Studio 2012 et 2015
Citation:
Envoyé par
Bousk
Les .lib et .dll doivent être compilés avec la même version du compilateur.
Merci Bousk,
J'ai créé un projet vide c++ Console. J'ai écrit le code ci-dessus.
Dans les propriétés du projet > Gestionnaire de configurations j'ai choisi Le mode Release et x64 pour la plateforme. J'ai linker les répertoires d'include et de lib de MySql Connector C++ et MySql Server installés via Le MySql Installer Web Community. Et j'ai indiqué dans les propriété du projet > Éditeur de liens > Entrée les fichiers : mysqlcppconn.lib et libmysql.lib. Enfin, j'ai inclus les fichiers : ssleay32.dll, libeay32.dll, libmysql.dll et mysqlcppconn-7-vs14.dll dans le répertoire Release du projet.
Avec le version de Visual Studio Community 2015 : cela marche, en revanche, avec Visual Studio Express 2012 pour Windows Desktop il y a un bug et lance une fenêtre noire sans rien dedans :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| 'MySqlCpp.exe' (Win32)*: Chargé 'C:\Users\...\Documents\Visual Studio 2012\Projects\MySqlCpp\x64\Release\MySqlCpp.exe'. Le module a été généré sans symboles.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\ntdll.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\kernel32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\KernelBase.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Users\...\Documents\Visual Studio 2012\Projects\MySqlCpp\x64\Release\mysqlcppconn-7-vs14.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\msvcp110.dll'. Les symboles ont été chargés.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\msvcr110.dll'. Les symboles ont été chargés.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\msvcr110.dll'. Les symboles ont été chargés.
'MySqlCpp.exe' (Win32)*: Déchargé 'C:\Windows\System32\msvcr110.dll'
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\ws2_32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\rpcrt4.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\ucrtbase.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Users\...\Documents\Visual Studio 2012\Projects\MySqlCpp\x64\Release\ssleay32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\advapi32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\msvcrt.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\sechost.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\msvcp140.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\vcruntime140.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\secur32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Users\...\Documents\Visual Studio 2012\Projects\MySqlCpp\x64\Release\libeay32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\gdi32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\win32u.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\gdi32full.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\msvcp_win.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\user32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\cryptbase.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\bcryptprimitives.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Users\...\Documents\Visual Studio 2012\Projects\MySqlCpp\x64\Release\libeay32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Déchargé 'C:\Users\...\Documents\Visual Studio 2012\Projects\MySqlCpp\x64\Release\libeay32.dll'
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\sspicli.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\imm32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\NapiNSP.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\pnrpnsp.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\mswsock.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\dnsapi.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\nsi.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\IPHLPAPI.DLL'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\winrnr.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\nlaapi.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\wshbth.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\rasadhlp.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\netapi32.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\netutils.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\wkscli.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\bcrypt.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\srvcli.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Déchargé 'C:\Windows\System32\netutils.dll'
'MySqlCpp.exe' (Win32)*: Déchargé 'C:\Windows\System32\wkscli.dll'
'MySqlCpp.exe' (Win32)*: Déchargé 'C:\Windows\System32\srvcli.dll'
'MySqlCpp.exe' (Win32)*: Déchargé 'C:\Windows\System32\netapi32.dll'
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\cryptsp.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
'MySqlCpp.exe' (Win32)*: Chargé 'C:\Windows\System32\rsaenh.dll'. Impossible de trouver ou d'ouvrir le fichier PDB.
Le thread 0x6e4 s'est arrêté avec le code 0 (0x0).
Le thread 0x1b4c s'est arrêté avec le code 0 (0x0).
Le thread 0x135c s'est arrêté avec le code 0 (0x0).
Le programme '[5792] MySqlCpp.exe' s'est arrêté avec le code 0 (0x0). |
Avez-vous une idée ? Est ce possible de le lancer dans Visual Studio 2012 ?
Je pense que non car le répertoire des Librairies de MySql Connector c++ se nomme vs14.
Je m'interroge cependant.
Merci