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

C++Builder Discussion :

DLL d�velopp�e en C++ Builder pour �tre utilis�e avec Delphi


Sujet :

C++Builder

  1. #1
    Membre �clair�

    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    0
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 0
    Par d�faut DLL d�velopp�e en C++ Builder pour �tre utilis�e avec Delphi
    J'ai d�velopp� une DLL en C++ qui doit �tre utilis�e avec Delphi 5.0

    Cell-ci fonctionne tr�s bien avec un programme C++, mais je n'arrive pas � l'utiliser avec Delphi.

    Ma DLL est comme suit:

    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
    51
    //--------------------------------------------------------------------------- 
    #include <vcl.h> 
    #include "FloatDLL.h" 
    #pragma hdrstop 
    //--------------------------------------------------------------------------- 
    extern __declspec(dllexport) void Float(char ,float); 
     
    void Float(char mnemonic[4],float *Reponse) 
    { 
    *Reponse = *(float *) mnemonic; 
    } 
    //--------------------------------------------------------------------------- 
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*) 
    { 
    return 1; 
    } 
    //--------------------------------------------------------------------------- 
     
    Cette fonction utilise *(float*) pour convertir une valeur binaire en point flottant, ça fonctionne. 
     
     
    Le programme en C++ qui la fait fonctionner est comme suit: 
     
    //--------------------------------------------------------------------------- 
    #include <vcl.h> 
    #pragma hdrstop 
     
    #include "FloatDLL.h" 
    #include "Conv_FloatUnit.h" 
    //--------------------------------------------------------------------------- 
    #pragma package(smart_init) 
    #pragma resource "*.dfm" 
    TForm1 *Form1; 
    //--------------------------------------------------------------------------- 
    __fastcall TForm1::TForm1(TComponent* Owner) 
    : TForm(Owner) 
    { 
    } 
    //--------------------------------------------------------------------------- 
    void __fastcall TForm1::Button1Click(TObject *Sender) 
    { 
    char mnemonic[4] = "00“B"; 
    float Reponse =-999.9; 
    Float(mnemonic,&Reponse); 
    } 
    //--------------------------------------------------------------------------- 
    void __fastcall TForm1::Button2Click(TObject *Sender) 
    { 
    Close(); 
    } 
    //---------------------------------------------------------------------------


    Pour appeler cette fonction en Delphi j'utilise le code suivant:


    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    Procedure Float(mnemonic: Str4; ReponsePtr: Pointer); external 'FloatDLL.DLL'; 
     
    Float(DataStr[II],ReponsePtr);
    �a ne fonctionne pas !

    J'ai aussi aluot� � la fonction d'appel stdcall

    Procedure Float(mnemonic: Str4; ReponsePtr: Pointer); stdcall external 'FloatDLL.DLL';

    �a ne fonctionne pas plus !


    J'appr�cierais avoie de l'aide pour r�soudre mon probl�me

    [Balise [code] rajout�e par gRRosminet]
    [Pensez-y vous-m�me � l'avenir. Merci.]

  2. #2
    Membre �clair�

    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    0
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 0
    Par d�faut
    Salut,
    l'ent�te de la d�claration de la fonction doit �tre la suivante
    extern "C" __declspec(dllexport) __stdcall void Float(char * mnemonic,float *Reponse);

    la fonction export�e devient alors Float et non _Float

    en outre en delphi avec une DLL "C" il est pr�f�rable d'utiliser les PChar,
    -- > Appel delphi

    Procedure Float(mnemonic: Pchar; totorSingle);stdcall ;external 'FloatDLL.DLL';


    var
    ReponsePtr: Single;
    totorChar;
    begin
    totor:='00“B';
    Float(totor,@ReponsePtr);
    Label2.Caption:=FloatToStr(ReponsePtr);
    end;

    Salutations

  3. #3
    Membre �clair�

    Homme Profil pro
    Inscrit en
    Mars 2002
    Messages
    0
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 0
    Par d�faut
    J'ai fait exactement ce selon tes recommandations et �a fonctionne tr�s bien. Je te remercie infiniment de ton aide.

    Jacquelin Rouleau

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 5
    Dernier message: 07/08/2012, 16h01
  2. R�ponses: 14
    Dernier message: 20/04/2009, 19h31
  3. R�ponses: 2
    Dernier message: 07/01/2009, 18h03

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