Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3073 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [BC6]Transfert instance de classe MySQL à une dll

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[BC6]Transfert instance de classe MySQL à une dll

n°714686
Cool Coyot​e
Posté le 03-05-2004 à 21:29:42  profilanswer
 

Bonjour,  
 
J'ai créé un petit programme avec Borland C++ 6 qui contient une petite classe de connexion à MySQL. Je l'utilise dans mon programme principal et ça fonctionne trés bien.  
Voulant fragmenter mon programme en plusieurs morceaux pour gérer une éventuelle évolution du programme, j'ai créé une dll qui affiche une fenêtre et qui doit réaliser une requête sur le serveur MySQL en utilisant l'instance de la classe MySQL créée dans mon programme principal.  
 
Voici comment cela se passe:  
 
Ma classe de connexion:  

Code :
  1. class PersoSQL
  2. {
  3. private:
  4.         MYSQL *mySQL; // Pointeur MySQL  
  5.         char *host,*user,*pass,*db;
  6.         MYSQL_RES *myRES;
  7. public:      // User declarations  
  8.         MYSQL_ROW myROW;
  9.         __fastcall PersoSQL()
  10.         {
  11.                 this->mySQL = mysql_init(NULL);
  12.                 this->host =  "localhost";
  13.                 this->user = "xxxxx";
  14.                 this->pass = "xxxxx";
  15.                 this->db = "xxxxx";
  16.         }
  17.         __fastcall ~PersoSQL()
  18.         {
  19.                 mysql_close(this->mySQL);
  20.         }
  21.         bool connect()
  22.         {
  23.                 if (!mysql_real_connect(this->mySQL, this->host, this->user, this->pass, this->db, 0, NULL, 0)){
  24.                         return false;
  25.                 }
  26.                 else
  27.                         return true;
  28.         }
  29.         int isconnect()
  30.         {
  31.                 //return((int) this->mySQL);  
  32.                 return(mysql_ping(this->mySQL));
  33.         }
  34.         MYSQL_RES* query(char *requete)
  35.         {
  36.                 if(!mysql_query(this->mySQL, requete)){
  37.                   this->myRES = mysql_store_result(this->mySQL);
  38.                     if(this->myRES)
  39.                       return (this->myRES);
  40.                     else
  41.                       return NULL;
  42.                 }
  43.                 else{
  44.                   ShowMessage(mysql_error(this->mySQL));
  45.                   return NULL;
  46.                 }
  47.         }
  48. };


 
Dans mon programme principal je déclare la fonction d'entrée de la dll:  

Code :
  1. extern "C"__declspec (dllimport) __stdcall int LoadAccueil(PersoSQL);


 
dans la création de la fenêtre principale:  

Code :
  1. perSQL = new PersoSQL; // je crée une instance de ma classe PersoSQL


 
code qui exécute la fonction de ma dll:  

Code :
  1. int a;
  2.         a = LoadAccueil(*perSQL);


 
dans ma dll:  
 

Code :
  1. #define __WIN__
  2. #include "mysql.h"
  3. #include "MySQL_class.h"
  4. #include "main_config.h"
  5. PersoSQL *MyConnect;
  6. extern "C" __declspec(dllexport) __stdcall int LoadAccueil(PersoSQL *SQL);
  7. #pragma argsused
  8. int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
  9. {
  10.         return 1;
  11. }
  12. //---------------------------------------------------------------------------  
  13. int __stdcall LoadAccueil(PersoSQL *SQL)
  14. {
  15.     TConfigForm *ConfigForm;
  16.     MyConnect = SQL;
  17.     ShowMessage(IntToStr(MyConnect->isconnect()));
  18.     return 1;
  19. }


 
 
Voilà, en fait donc lorsque je lance la fonction de ma requête, je demande un ping afin de savoir si mon instance de classe a bien été transmise et si je suis toujours connecté au serveur, mais j'ai ce message d'erreur:  
 

Citation :

Access violation at adress 1000D0C4 in module 'LIBMYSQL.DLL'. Read of adress 000000E8


 
 
J'ai essayé plein de choses mais rien à faire j'ai toujours cette satanée erreur et j'arrive à rien depuis longtemps, je suis bloqué.  
Si quelqu'un peu m'aider, ce serait vraiment sympa.  
 
Merci d'avance.

mood
Publicité
Posté le 03-05-2004 à 21:29:42  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [BC6]Transfert instance de classe MySQL à une dll

 

Sujets relatifs
[ Access/MySql ] Migration des donnéesMySQL: problème avec une requête multitable
[mysql] Creation base et grantMySQL auto-increment
[MYSQL] prob bizarre ma requete ne me renvoi que le premier résultatMysql & Order By
[Mysql] pb entre max et mysql_num_rows Mysql - Petit problème de clé primaire -
SubQueries en MySqlMySQL (export de données en fichier CSV) ?
Plus de sujets relatifs à : [BC6]Transfert instance de classe MySQL à une dll


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)