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 :

Problème de dll LabView appelée par Delphi


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Problème de dll LabView appelée par Delphi
    Bonjour,

    J'ai un souci concernant l'appel d'une dll crée avec Labview et apellée sous delphi.
    C'est une dll toute simple contenant une addition entre 2 chiffres.
    Sous delphi je n'ai pas le résultat de l'addition, la case résultat affiche 'NAN'.
    La dll est bien chargée, je n'ai pas de messages d'erreurs.
    Si cette dll est apellée avec labview, je n'ai aucun souci.(la dll semble donc correcte).
    Dans le doute j'ai créé la même dll sous delphi et apellée par delphi, ça marche correctement, j'en conclus que l'appel dans delphi est correct.

    Il y a peut être une astuce que je ne connais pas ?

    mon code Delphi est le suivant:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    unit Start;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Spin;
     
    type
      TForm1 = class(TForm)
        Calcul: TButton;
        A: TEdit;
        B: TEdit;
        Label1: TLabel;
        Res: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure CalculClick(Sender: TObject);
        procedure AKeyPress(Sender: TObject; var Key: Char);
        procedure BKeyPress(Sender: TObject; var Key: Char);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
      end;
     
    const
      NomDll = 'DLL1.dll';
    //  function Somme(A, B: Real): Real; stdcall; external NomDLL name 'Somme';
      function Somme(A, B: Real): Real; stdcall; external NomDLL index 1;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     A.Text:='0';
     B.Text:='0';
     Res.Text:='0';
    end;
     
    procedure TForm1.CalculClick(Sender: TObject);
    begin
     Res.Text:=(Floattostr(Somme(strtofloat(A.text), strtofloat(B.text))));
    end;
     
    end.

    Les paramètres de ma Dll labview sont les suivants: Voir image Jpeg jointe

    Si quelqu'un a une idée...

    Le but de cette Dll sera a terme utilisé pour piloter les instruments Labview avec Delphi...

    Merci.
    Kamanu
    Images attachées Images attachées  

  2. #2
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 15
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     //function Somme(A, B: Real): Real; stdcall; external NomDLL index 1;
     // 
      function Somme(A, B: Double): Double; stdcall; external NomDLL index 1;
    Je ne sais pas quel delphi tu utilises ni sous quelle plate forme ton programme tourne, tu devrais chercher du côté du type de donnée en remplaçant Real par double.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    C'est sous Xp, delphi7 et labview 6.i...

    Ca ne marche pas, j'ai le même résultat avec 'Double'...
    Je cale...

  4. #4
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    773
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 773
    Points : 500
    Points
    500
    Par défaut
    salut

    Sais tu sous quel langage la dll est écrite ?
    Voir aussi la convention d appel de la DLL . En "C" par défaut ce n'est pas
    stdcall mais cdecl me semble-t-il .. enfin à contrôler dans ton appel aux fonctions de la dll.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Oui, la dll est écrite et compilée en LabView (elle marche quand je l'apelle avec un éxécutable écrit en LabView).
    L'éxécutable lui est en Delphi (Il fonctionne si j'apelle avec la même dll écrite en Delphi).
    C'est comme avec stdcall (remplacé par cedcl).
    Par contre la dll en LabView fait 19K et la même en Delphi fait 87k ???

  6. #6
    Membre habitué
    Inscrit en
    Août 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Août 2002
    Messages : 144
    Points : 157
    Points
    157
    Par défaut
    Est ce que la machine sous Delphi possède le runtime labview?

    Sans le runtime cela ne fonctionnera pas...

    La différence de taille vient de là... Delphi génère des dll autonomes pas Labview...

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    C'est la même machine, le runtime est bien présent...

    J'ai essayé avec différents stdcall, cdecl, safecall, etc... rien n'y fait !!!
    La dll est bien chargée, mais ça va pas plus loin...

Discussions similaires

  1. probleme DLL dataseg appelée par un exe
    Par totoscill dans le forum Langage
    Réponses: 2
    Dernier message: 30/07/2009, 09h23
  2. [AJAX] Fichier ASP appelé par AJAX
    Par dragonfly dans le forum Général JavaScript
    Réponses: 24
    Dernier message: 14/06/2007, 12h14
  3. Réponses: 8
    Dernier message: 24/11/2006, 13h07
  4. Réponses: 7
    Dernier message: 24/08/2006, 13h21
  5. [VB6] création dll win32 et appel par un autre programme
    Par Tankian85 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 10/03/2006, 09h21

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