IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Application Win32 et dll - erreur execution prog (chkesp.c)


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Application Win32 et dll - erreur execution prog (chkesp.c)
    Bonjour à tous,

    je fais appel à votre savoir.
    j'ai créé mon application en mode console(win32 application) qui va scruter certaine valeurs dans une base de données MySQL.
    Pour ce faire j'ai du inclure dans mon projet une DLL nommée libmysql.dll

    Le problème que je rencontre actuellement est que mon application fonctionne tout à fait bien sur ma plateforme de développement (WinXP & visual c++ v6), par contre, lorsque je veux l'utiliser sur un autre ordinateur (ou l'environnement de développement n'est pas installé), j'obtiens l'erreur suivante à l'éxecution du programme:
    Debug error!
    file: i386\chkesp.c at line 42
    The value of ESP was not properly saved accross a function call...
    D'après ce que j'ai trouvé sur le web, il s'agirait d'une erreur d'appel aux méthodes de la dll dans mon application c++ et plus précisemment au niveau de la convention d'appel ("calling convention" dans msdn __stdcall ...).


    Quelqu'un pourrait t-il m'éclairer sur le sujet?

    Merci d'avance.

    ps: je n'ai pas trouvé de réponse à ma question sur les différents sujets traités.si toutefois j'ai mal effectué ma recherche, veuillez m'en excuser.

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,;
    je pense que tu devrais distribuer les dll MFC + Mysql sur le poste cible.
    tu es en DLL MFC partagées ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Salut farscape,
    je manque d'information sur ce qu'est une dll partagée.
    Ce que je peux dire, c'est que j'ai ajouté sur le poste en question la dll libmysql.dll dans le même répertoire que l'éxecutable.
    Sur ce poste, c'est win98 qui est installé...
    j'ai donc rajouté un certain nombre de dll... (MFC42.dll , MSVCRTD.dll...)
    je suis ensuite allé voir sur msdn, ça parlait de redistribution d'application développées en VC++ 6.
    j'y ai téléchargé un package nommé
    vc6redistsetup_enu.exe
    Il contient justement certains fichiers indispensables à l'éxécution de certaines fonctionnalités de l'API Windows.
    Après avoir installé ces composantes et redémarré la machine, le problème subsiste.
    Apparemment c'est cette histoire de convention d'appel qui pose problème.
    J'ai trouvé de la doc. mais je n'arrive malheureusement pas à mettre en oeuvre.

    MSDN

    Peut-être devrais-je essayer de trouver le code source de la dll ajoutée pour utiliser MySQL?

  4. #4
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Question stupide peut être, mais tu utilises la version commerciale de Vc++ ou la version Learning? Car la deuxième n'est pas prévue pour distribuer des sources.

    Ensuite, je pense qu'il y a effectivement un problème de ressources. Vérifie tes options de projet.

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    un detail ,
    tu as bien distribué la version release de ton programme ?

  6. #6
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Dans le doute, j'ai recompilé tout le projet avec l'option 'Set Active Configuration' de l'onglet 'Build' en mode Release Win32, mais le résultat reste le même.

    En ce qui concerne Visual Studio, c'est la version commerciale que je possède.

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    ce message est fort etrange tout de meme !
    Debug error!
    file: i386\chkesp.c at line 42
    The value of ESP was not properly saved accross a function call...
    a mon avis une de tes dll n'est pas correcte c'est a dire pas au format VC ,
    mais borland par exemple...
    verifies qu'il n'y ait pas d'autres DLL du meme nom presentes a un autre endroit sur cette machine, ainsi que les versions (date et heure)...


  8. #8
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    j'ai trouvé 2 fichiers portant le nom "libmysql.dll"

    le 1er se situe avec l'exe en question.
    le second se trouve dans le répertoire d'EasyPhp.

    les 2 n'ont pas la même date ni la même taille.
    De plus, pour les tests, je travaille en localhost, et Easyphp n'est pas en route.
    (mon appli comporte un module, qui, dans le cas d'impossibilité de connexion au serveur Apache me renvoie un message d'erreur, puis quitte l'application).

  9. #9
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    je n'ai pas été très parlant sur mon dernier message.
    Je voulais dire qu'en cas d'impossibilité de connexion avec EasyPhp, l'application était en mesure de fournir un message d'avertissement, puis de se terminer correctement(rien à voir avec le problème énoncé en tête de page)

    Sinon, j'ai trouvé de la doc. intéressante via 3w.mysql.com
    http://dev.mysql.com/downloads/

    on peut trouver des exemples sur la déclaration des méthodes de l'objet mysql (telecharger le code source de mysql++)

    le problème n'est pas encore résolu,
    mais merci tout de même pour votre aide.

  10. #10
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    Pour moi c'est forcemment une des dll utilisées qui n'est pas a la norme VC .


  11. #11
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    Salut Farscape,
    je vais essayer de trouver une dll développée en c++...

    je pensais qu'il était possible de partager du code compilé avec un autre langage que celui utilisé...
    ex: utiliser une dll créée en VB dans un projet en visual c++.

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    l'inverse plutot

    ou alors, c'est un objet com, mais là, il faut le wrapper adéquat

  13. #13
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    ouh làlà, je suis un peu novice dans le domaine...
    ( )
    quand tu parles d'un objet com, c'est un fichier du style Command.com?
    je ne sais pas non plus ce que signifie 'Wrapper'.

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ca m'étonnerait que la lib mysql soit en VB

    Citation Envoyé par beroot57
    je pensais qu'il était possible de partager du code compilé avec un autre langage que celui utilisé...
    c'est le principe de l'objet COM (sans rentrer dans les détails)

  15. #15
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    d'après le code que j'ai sous les yeux, la dll a été écrite en c++ (cf. mysql++).
    pour la librairie, je n'en ai aucune idée....

    la seule chose dont je suis sur, c'et que l'application fonctionne si et seulement si visual c++ est installé.
    Si je le supprime de la machine, je reçois alors le message d'erreur cité plus haut.

    Qu'est ce que je peux faire pour remédier au problème?

  16. #16
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    a mon avis l'embrouille viens de la presence de deux dll dans ton systeme .
    dont une mise a un autre format (borland).
    je distribue moi même des applis avec Mysql donc libMySql.dll je n'ai pas de probleme.
    verifie le path de recherche de windows.
    si il y a plus d'une dll mysql sur le systeme renomme la pour voir ...

  17. #17
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    salut,
    j'ai trouvé 2 dll's:
    une dans le projet avec l'executable
    et l'autre dans program files\... semble être dédiée à easyphp.

    j'ai vérifié le path, il vaut:
    c:\windows;c:\windows\command
    j'ai essayé de renommer la dll en
    librairie-mysql.DLL
    à ce moment, le système génère ensuite l'erreur suivante:

    un fichier 'libmysql.dll' n'a pas pû être trouvé.
    j'ai alors cherché dans l'éditeur d'éventuelles occurences libmysql.dll
    pour les modifier et recompiler... mais je n'ai rien trouvé.
    (idem via windows 'rechercher une chaine de caractères' dans le répertoire du projet)

    (je n'ai pas modifié PATH)

    ç'est alors cette dll que je devrais remplacer?
    ( )

  18. #18
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    oui essaye de mettre a jour la dll de mysql sur ce poste .

  19. #19
    Futur Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 14
    Points : 8
    Points
    8
    Par défaut
    ça y'est, ça marche!
    je résume:
    j'ai récupéré une dll au pif d'une des dernières version d'Apache,
    et joint un nouveau fichier lib au projet VC++,
    recompilé tout ça en version release Win32...
    et tout uploadé sur mon ordi cobaye.

    l'ensemble de l'application fonctionne dès à présent sur le poste, sans la présence de l'environnement de développement.
    ( )

    Je tiens à tous vous remercier pour votre attention ainsi que votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WIN32][D6] Erreur execution
    Par superbabe dans le forum Langage
    Réponses: 0
    Dernier message: 18/04/2008, 13h20
  2. [WIN32][D7][DLL] Erreur: débordement de pile !
    Par hepha1970 dans le forum Débuter
    Réponses: 5
    Dernier message: 17/12/2007, 01h41
  3. [TP] Erreur d'accès exécution prog externe ?
    Par fabiofabio dans le forum Turbo Pascal
    Réponses: 8
    Dernier message: 25/07/2007, 09h53
  4. Erreur execution dll introuvable
    Par hegros dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 22/12/2006, 09h40
  5. [WinDev] Est-il possible d'executer une application Win32 dans un site ?
    Par ran_hery dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 22/09/2006, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo