Fonctionne sous l'interface de développement, l'exécutable plante ?

Fonctionne sous l'interface de développement, l'exécutable plante ? - VB/VBA/VBS - Programmation

Marsh Posté le 06-10-2005 à 15:21:51    

C'est la première fois que je vois ça:
 
J'ai un logiciel en VB6 qui doit se connecter à une base de données mySQL. J'utilise donc l'API mySQL, je fais le développement, et tout finalement marche sous VB6. Je crée l'exécutable, je le lance, et là, à ma grande surprise, il refuse de se connecter à la base de données.  
 
Sachant que:

  • J'ai bien mis la dll libmysql.dll dans le même répertoire que l'exécutable
  • Qu'un autre programme, se connectant sur la même base de données avec la même technologie marche parfaitement
  • Qu'il n'y a pas de paramètres passés au programme par ligne de commande


Est-ce que quelqu'un voit une raison pour laquelle l'exécutable et le logiciel lancé à partir de l'interface de développement fonctionnent différemment? C'est probablement un truc débile, mais là j'avoue que je ne vois pas.  :pt1cable:

Reply

Marsh Posté le 06-10-2005 à 15:21:51   

Reply

Marsh Posté le 07-10-2005 à 12:33:08    

peut etre un probleme de references dans l'appli ? est-ce qu'il trouve bien les librairies ?

Reply

Marsh Posté le 07-10-2005 à 13:22:04    

C'est quoi l'erreur qu'il t'affiche ?


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 07-10-2005 à 14:20:58    

Il trouve bien les librairies, puisque sinon il afficherait un message d'erreur
 
Je corrige: j'ai voulu faire le test (sur ma machine) en retirant la librairie du répertoire. Et là, ça marche.
 
Si je tente sur une autre machine, avec la librairie, il n'arrive pas à se connecter.
Si je retire la librairie du répertoire, j'ai un message d'erreur (Erreur 53: libmysql.dll introuvable). Normal.
Mais attention: si je la mets dans le répertoire system32, il n'arrive pas à se connecter certes, mais il la trouve alors que je ne lui ai jamais dit qu'elle était là-bas. :D  
 
Si je tente d'enregistre manuellement la librairie avec un regsvr32, il me répond qu'aucun point d'entrée n'a été trouvé.
 
Alors, des idées quelqu'un ?

Reply

Marsh Posté le 07-10-2005 à 14:41:58    

daviso a écrit :

Il trouve bien les librairies, puisque sinon il afficherait un message d'erreur
 
Je corrige: j'ai voulu faire le test (sur ma machine) en retirant la librairie du répertoire. Et là, ça marche.
 
Si je tente sur une autre machine, avec la librairie, il n'arrive pas à se connecter.
Si je retire la librairie du répertoire, j'ai un message d'erreur (Erreur 53: libmysql.dll introuvable). Normal.
Mais attention: si je la mets dans le répertoire system32, il n'arrive pas à se connecter certes, mais il la trouve alors que je ne lui ai jamais dit qu'elle était là-bas. :D  
 
Si je tente d'enregistre manuellement la librairie avec un regsvr32, il me répond qu'aucun point d'entrée n'a été trouvé.
 
Alors, des idées quelqu'un ?


C'est le fonctionnement normal des DLL non activeX: Le programme cherche dans son répertoire et s'il ne trouve pas la DLL, il va la chercher dans system32.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 07-10-2005 à 14:50:06    

mareek a écrit :

C'est le fonctionnement normal des DLL non activeX: Le programme cherche dans son répertoire et s'il ne trouve pas la DLL, il va la chercher dans system32.


 
D'accord, mais alors comment expliquer le fait qu'avec la dll dans son répertoire, il ne se connecte pas, et que si elle dans le system32 il se connecte?
 
Et sans planter lamentablement dans aucun des deux cas: simplement dans le premier connexion acceptée, dans le deuxième non.

Reply

Marsh Posté le 07-10-2005 à 14:52:34    

daviso a écrit :

D'accord, mais alors comment expliquer le fait qu'avec la dll dans son répertoire, il ne se connecte pas, et que si elle dans le system32 il se connecte?
 
Et sans planter lamentablement dans aucun des deux cas: simplement dans le premier connexion acceptée, dans le deuxième non.


J'en sais rien, peut-être parce que la dll s'attend à se trouver dans system32 et qu'elle ne peut fonctionner autrement.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 07-10-2005 à 14:53:48    

Question annexe, pourquoi la connexion se ferait à partir d'une machine, et pas de l'autre?

Reply

Marsh Posté le 07-10-2005 à 14:55:25    

daviso a écrit :

Question annexe, pourquoi la connexion se ferait à partir d'une machine, et pas de l'autre?


parce qu'elles n'ont pas tout à fait le même environnement ;)
D'après ce que tu décris, l'autre machine n'a pas la librairie dans System32 alors que la tienne si.


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
Reply

Marsh Posté le 07-10-2005 à 15:00:12    

Oui, parce que EasyPHP est installé sur ma machine, et pas sur l'autre. La barbe...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed