begin process at 2012 05 28 04:55:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Acceder à une dll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Acceder à une dll

dimanche 15 avril 2007 à 10:37:33 | Acceder à une dll

Salim45

Bonjour à tous,

J'essaye d'accéder à des fonctons d'une Dll et j'ai une erreur de compilation de visual C++ :

Module:
File: i386\chkesp.c
Line: 42

The value of ESP was not properly saved across a function call.


Voiçi un bout de mon code qui pemet d'accéder à la DLL:
#include "stdafx.h"
#include <windows.h>


typedef void /*_stdcall*/ (*oupfuncPtr)(short PortAddress, short data);
typedef short /*_stdcall*/ (*inpfuncPtr)(short PortAddress);
oupfuncPtr _Out32;
inpfuncPtr Inp32;

int  Reset(void)
{
    HINSTANCE hInstLibrary = LoadLibrary("inpout32.dll");
  if (hInstLibrary == NULL)   {
      FreeLibrary(hInstLibrary);
      return 1; //pb de chargement de la Dll
   }
     _Out32 = (oupfuncPtr) GetProcAddress(hInstLibrary, "Out32");
     Inp32 = (inpfuncPtr) GetProcAddress(hInstLibrary, "Inp32");
   
     if ((_Out32 == NULL) || (Inp32 == NULL))     {
        FreeLibrary(hInstLibrary);
     }

     //_Out32(78,11);   // ça plante ici
    Inp32(0x34);         // ça plante ici

}

Est-ce quelqu'un d'entre vous pourquoi j'ai cette erreur ?
En vous remerciant par avance pour vos réponses.


Ps:
J'utilise VC++ 6.0 sous XP.
Le code du dessus est dans un source portant l'extension .c (et non pas .cpp).

dimanche 15 avril 2007 à 10:50:24 | Re : Acceder à une dll

racpp

Administrateur CodeS-SourceS
Salut,
Il parait que c'est un problème de convention d'appel. Essaie de définir les types de pointeurs des fonctions comme ceci:
typedef void  (_stdcall *oupfuncPtr)(short PortAddress, short data);
typedef short  (_stdcall *inpfuncPtr)(short PortAddress);

dimanche 15 avril 2007 à 11:03:45 | Re : Acceder à une dll

Salim45

Réponse acceptée !
Bonjour racpp,

Merci pour votre réponse. Ca fonctionne bien. Par contre, peut-tu me dire pourquoi ça ne
marchais pas avant. Ceci m'aidera à comprendre mais aussi pour les autres.
Sincères salutations.

ps:
je n'oublie pas d'accepter la réponse.

dimanche 15 avril 2007 à 11:33:32 | Re : Acceder à une dll

racpp

Administrateur CodeS-SourceS
La convention d'appel concerne l'utilisation des paramètres pour l'appel d'une fonction. Par défaut, le compilateur utilise  __cdecl mais  les  DLLs  utilisent  __stdcall.
__cdecl = Les paramètres sont mis dans la pile par l'appelant. Ils sont également retirés de la pile par l'appelant après l'appel de la fonction.
__stdcall = Les paramètres sont mis dans la pile par l'appelant. Ils sont retirés de la pile au sein de la fonction appelée.



Cette discussion est classée dans : dll, short, hinstlibrary, out32, inp32


Répondre à ce message

Sujets en rapport avec ce message

DLL sous C++ builder 6 [ par ivdz ] Bonjour,Voici une partie du .h de mon exécutable que je dois transformer en DLL (sous C++ builder 6) :#ifndef MODBUSTCPIP_H#define MODBUSTCPIP_Hclass DLL ActiveX avec VC++ / ASP [ par yAAm ] Bonjour, Un petit probleme avec atl/com+ / asp. En codant es fonctions simplistes comme :                                 &n Passage de paramètres? [ par bip98 ] Bonjour, J'ai un petite question, je vaidrais passer inp32 et oup32 dans la fonction FonctionDivers(). comment faire ? Ce fragment de code commande erreur de compil [ par baptor ] salut à tous; J'essay de piloter les broches du port // sous windows XP et Vc++.J'utilise la dll inpout32.dll.J'ai deux erreurs de compilation et je erreur de compilation [ par baptor ] salut à tous; J'essay de piloter les broches du port // sous windows XP et Vc++.J'utilise la dll inpout32.dll.J'ai deux erreurs de compilation et je Hook DLL [ par Taron31 ] Bonjour, Voilà, j'ai écris une petite DLL de hook pour une certaine fonction de l'API win32, je voulais tout simplement savoir comment la charger d Utilisation d'une activeX dans une DLL [ par woully ] Bonjour,je suis noovice dans le développement en CPP. Je développe actuellement une DLL sous .Net c++ qui integre une activeX. Comment dois je intégre probleme de DLL [ par lamoueste ] bonjour a tous alors j'ai un petit souci j'aurai voulu appelle une fonction d'une dll depuis le projet ci-dessous mais j'ai une erreur : appelleDll.ob probleme de dll [ par lamoueste ] j'ai un probleme avec ma dll : il s'agit d'une fonction qui doit lance une fenetre (dialog box ) en modal mais j'ai une "assertion failed" :( et je ne Fenetre dans DLL [ par ncoder ] Bonjour à tous,Dans beaucoup de mes programmes, lorsqu'une opération assez longue est en cours, j'utilise une petite fenètre indicant l'état et la tac


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales