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

Langage Delphi Discussion :

Multithread, pointeur et dll


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 240
    Points : 102
    Points
    102
    Par défaut Multithread, pointeur et dll
    je ne comprend pas la chose suivante :

    j'ai un prog. qui charge en statique une routine d'une dll.
    ce prog. fait ensuite du multi thread.
    chaque thread a une propriété de type pointeur qui sert de paramètre passé lors de l'appel de la routine...
    en gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    TMyThread = Class(TThread)
    ...
        Ptr: Pointer;
    end;
    lors de la création du thread, le pointeur est alloué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    GetMem(Ptr, 1050);
    puis dans la méthode Execute du thread, j'appelle la routine de la dll en lui passant ce pointeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ReturnValue := MyFonction(Ptr);
    j'ai fait du pas à pas :
    - à l'appel de MyFonction au niveau du prog, le Ptr a bien une adresse
    - à l'entrée dans MyFonction de la dll, le paramètre est à nil !

  2. #2
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    fais voir les déclarations de MyFonction (cote dll et cote exe)

  3. #3
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 240
    Points : 102
    Points
    102
    Par défaut
    voici les déclarations :
    - côté prog. appelant (qui est une dll)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function MyFonction(Entree: Pointer): Integer; stdcall; external 'test.dll' name 'Controler';
    -côté dll appelée (test)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    function Controler(Entree: Pointer): Integer;

  4. #4
    Membre habitué Avatar de gord's
    Inscrit en
    Avril 2003
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 115
    Points : 127
    Points
    127
    Par défaut
    rajoute stdcall coté dll

  5. #5
    Membre régulier
    Inscrit en
    Mars 2002
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 240
    Points : 102
    Points
    102
    Par défaut
    Merci
    j'avais oublié et ça marche !

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

Discussions similaires

  1. Inline, pointeur et dll ..
    Par zizoufoot dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 03/08/2012, 03h43
  2. Problème utilisation de pointeur avec dll
    Par Xarik dans le forum C#
    Réponses: 4
    Dernier message: 05/08/2011, 20h37
  3. Multithread - pointeur sur structure
    Par LePapat26 dans le forum C
    Réponses: 5
    Dernier message: 22/07/2009, 10h28
  4. Question de pointeur entre un programme et une DLL
    Par Neilos dans le forum C++Builder
    Réponses: 12
    Dernier message: 01/02/2005, 19h12
  5. Chargement d'une DLL et utilisation du multithread
    Par Maitre Kanter dans le forum Langage
    Réponses: 6
    Dernier message: 07/09/2004, 23h18

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