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 :

utiliser une DLL C++ dans un Exe Delphi


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut utiliser une DLL C++ dans un Exe Delphi
    Bonjour, j'essaie d'utiliser une dll en C++ dans un projet Delphi.
    La dll est basique et elle fonctionne bien dans un programme en C++.
    Il n'y a qu'une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    __declspec (dllexport) int Addition (int a , int b) 
    {
        return (a+b);   
    }
    La dll se charge sans problème sous Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     Addition:function (a:integer;b:integer):integer; stdcall;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     Convert:=LoadLibrary('MADLL.dll');
     if Convert=0 then raise Exception.Create('La DLL de convertion est introuvable');
     @Addition:=GetProcAddress(Convert,'Addition');
     if @Addition=nil then raise Exception.Create('La fonction Addition est introuvable');
    end;
    La fonction Addition est bien reconnue et utilisée puisque au code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.BoutonClick(Sender: TObject);
    var m :integer;
    begin
     m:=Addition(6,21);
     showmessage(intToStr(m));
     end;
    j'obtiens la bonne réponse 27; par contre je reçois un message de violation d'accès.
    Le fait de supprimer le showmessage n'y change rien.
    J'aimerais bien comprendre ce qui pose problème, mais pour l'heure je suis dans le brouillard.
    Merci de me faire part de vos idées.
    Rudi0
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Points : 8 078
    Points
    8 078
    Par défaut
    Salut
    Essaie d'utiliser cdecl en lieu et place de stdcall
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Addition:function (a:integer;b:integer):integer; cdecl;
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. [MEX] utiliser une dll C dans le code matlab
    Par hector2 dans le forum MATLAB
    Réponses: 2
    Dernier message: 18/06/2010, 15h53
  2. Utiliser une DLL C# a partir de delphi
    Par ghazghkull dans le forum Delphi
    Réponses: 11
    Dernier message: 23/04/2007, 16h40
  3. [COM] Comment utiliser une dll DotNet dans un projet win32 ?
    Par Marmottoc dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 05/05/2006, 15h58
  4. [Langage]Comment utiliser une dll .NET dans VB6?
    Par BouB dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/04/2006, 14h20

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