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 :

passage de pointeurs entre appli delphi et DLL c++


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 6
    Par défaut passage de pointeurs entre appli delphi et DLL c++
    bonjour,

    j essaie d utiliser une dll que je devellope en c++ a partir d une appli existante en delphi et j ai un pb qui me *tracasse* depuis pas mal de temps.

    cela se passe ds les fonctions qui travaillent sur des pointeurs. les objets pointés semblent se modifier en cours d execution. voila un petit resume de la chose:

    ds l appli delphi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var
      ref : Pointer;
     
      begin
        ref:=CreateTimer(index);
        ResetTimer(ref);
      end;
    les prototypes sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      CreateTimer:=Function(index : Integer) : Pointer cdelc;
      ResetTimer:=Function(instance : Pointer) : Integer cdelc;
    ds la dll:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    void * CreateTimer(int _index) {
      Timer * result=new Timer(_index);
      return ((void *) (result));
    }  
     
    int ResetTimer(void * instance) {
      writeOnConsole(((Timer *) (instance))->getIndex());
      writeOnConsole(((Timer *) (instance))->getIndex());
      writeOnConsole(((Timer *) (instance))->getIndex());
      writeOnConsole(((Timer *) (instance))->getIndex());
      return 0;
    }
    et ce qui se passe c est qu en general, entre les differents affichages de l index ds la DLL celui ci change. Dans mes tests, je l initialise a 44, et il passe la fois d apres a 2 puis a 1... (qqsoit la valeur initiale, il passe toujours a 2 puis a 1).

    je ne sais pas si c etait tres clair.. mais c est la premiere fois que j essaie de faire passer des pointeurs d une dll a l exterieur.. et peut etre que qqn aura une solution...

    NB: j ai aussi tente d utiliser des Timer * au lieu de void * ds les prototypes des fonctions de la DLL et il y a tjrs les memes pbs..

  2. #2
    Membre émérite
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Par défaut
    Selon comment sont exportés les functions dans la dll, peut-etre que changer le cdecl en stdcall pourrait arrganger le pb.
    En tout cas, à voir. Mais je garantis rien

Discussions similaires

  1. passage de pointeur de fonction a une DLL en C#
    Par bramy dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/04/2007, 14h44
  2. pb passage de données entre Appli et DLL
    Par Bobx dans le forum Delphi
    Réponses: 12
    Dernier message: 29/12/2006, 01h09
  3. Probleme de passage de string entre DLL win32 et projetC#?
    Par Jayceblaster dans le forum C++/CLI
    Réponses: 15
    Dernier message: 17/11/2006, 14h10
  4. Passage de pointeurs entre fonctions
    Par mickael.be dans le forum Langage
    Réponses: 3
    Dernier message: 02/01/2006, 22h01
  5. Question de pointeur entre un programme et une DLL
    Par Neilos dans le forum C++Builder
    Réponses: 12
    Dernier message: 01/02/2005, 20h12

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