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

Delphi Discussion :

Exception externe et dll


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2006
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Exception externe et dll
    Bonjour à tous et toutes.
    J'essaye de développer un soft en Delphi ( avec Delphi 2005 ) qui gère une communication via le port USB vers un CP2102 de Silicon Labs ( c'est un adaptateur UART - USB qu'on place à la suite d'un microcontrôleur ).

    Silicon Labs me fourni un ficher dll avec des API pour gérer cette liaison USB.
    La dll est écrite en C++ et je suis confronté à un problème quand j'utilise une des fonctions de cette dll.

    Voici le prototype de la fonction de la dll :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SI_STATUS SI_Write (HANDLE Handle, LPVOID Buffer, DWORD NumBytesToWrite, DWORD *NumBytesWritten);
     
    typedef unsigned long DWORD;
    typedef void far         *LPVOID;
    typedef int                SI_STATUS;

    et voici le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    interface
    ...
      const
        function SI_Write( Handle : Longword; Buffer : Pointer; NumBytesToWrite : Longword; NumBytesWritten : Pointer ) : Integer; stdcall; external NomDLLUSB;
    ...
    procedure TForm1.WriteUSBClick(Sender: TObject);
        var NumBytesWritten : Longword;
        begin
            if LedOpenSuccess.Active = True then
            begin
                FBufferOUT[0] := $30;
                FBufferOUT[1] := $31;
                FBufferOUT[2] := $32;
                FBufferOUT[3] := $33;
                FBufferOUT[4] := $34;
                FBufferOUT[5] := $35;
                FBufferOUT[6] := $36;
                FBufferOUT[7] := $37;
                FBufferOUT[8] := $38;
                FBufferOUT[9] := $39;
                status := SI_Write( USBDevice, @FBufferOut, 10, @NumBytesWritten );
            end;
        end;
    Quand je lance en fesant Exécuter/Exécuter sans déboguer et que l'appuis sur le bouton WriteUSB, je vois que l'envoi s'effectue correctement sur l'usb ( avec un sniffeur ) mais le soft me met le message d'erreur "Exception externe C000001E".

    J'ai pensé à un mauvais passage de paramètre, j'ai essayé tous les types de pointeur, mais j'ai toujours la même erreur. Est ce que quelqu'un peut m'aider à résoudre ce problème?

  2. #2
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Salut,
    Essaie de remplacer la convetion d'appel stdcall par cdecl
    Enfin s'il n'est pas trop tard...

Discussions similaires

  1. Exception externe C0000008
    Par SteffX dans le forum EDI
    Réponses: 6
    Dernier message: 24/01/2012, 17h18
  2. Exception dans kernel32.dll qui freeze mon programme
    Par Chekov dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 30/03/2009, 14h59
  3. pointeur extern et DLL
    Par NiamorH dans le forum C++
    Réponses: 10
    Dernier message: 26/03/2008, 12h51
  4. Exception externe C0000029
    Par Altau dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/10/2007, 22h35
  5. [VC6 et MFC] Exception dans MFC42D.dll
    Par Philippe320 dans le forum MFC
    Réponses: 8
    Dernier message: 09/12/2005, 15h14

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