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 :

[Builder 5] Comment utiliser des fonctions d'une DLL (Delphi) ?


Sujet :

C++Builder

  1. #1
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut [Builder 5] Comment utiliser des fonctions d'une DLL (Delphi) ?
    Je développe principalement en Delphi. Mais, j'ai été amené à créer une DLL.
    J'essais de me rappeller mes lointains souvenir de C++, pour faire un petit exe qui fera appel aux fonction de ma DLL. Le but est de s'assurer que ma DLL peut être appellée depuis n'importe quel langage.

    Je suis sous C++Builder 5 Pro, et je coince dès le début pour inclure ma DLL à mon projet. Je pensais qu'un simple #include "MaDLL.dll" suffirait, mais apparemment non.
    J'ai fait une petite recherche dans la FAQ, mais rien sur les DLL.
    J'ai bien trouvé ce post (http://www.developpez.net/forums/sho...&highlight=dll), mais quand j'essais d'inclure le *.lib généré, j'ai les mêmes erreurs que pour la DLL :
    Caractère 'ÿ' (0x0) incorrect
    Caractère '@' (0x0) incorrect
    ...
    Si quelqu'un pouvait m'indiquer la marche à suivre ...
    Merci d'avance.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Il faut inclure le ou les en-têtes (.) contenant les déclarations des fonctions / classes de ta bibliothèque.
    Il faut ajouter le fichier bibliothèque (.lib) dans les options de l'éditeur de liens.

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Laurent Gomila
    Il faut inclure le ou les en-têtes (.) contenant les déclarations des fonctions / classes de ta bibliothèque.
    C'est à dire ?
    Je n'ai plus fait de C++ depuis 2002.

    Citation Envoyé par Laurent Gomila
    Il faut ajouter le fichier bibliothèque (.lib) dans les options de l'éditeur de liens.
    Ca ne change rien. J'ai les mêmes erreurs.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Hmm... Est-ce que tu as des en-têtes (.h) qui vont avec ta bibliothèque ? Si ce n'est pas le cas il faudra procéder autrement (charger la DLL dynamiquement).

  5. #5
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Laurent Gomila
    Hmm... Est-ce que tu as des en-têtes (.h) qui vont avec ta bibliothèque ?
    Non. Ca n'existe pas en Delphi. Ca doit être propre au C++.

    Citation Envoyé par Laurent Gomila
    Si ce n'est pas le cas il faudra procéder autrement (charger la DLL dynamiquement).
    Bon, j'ai essayé :
    - Dans le *.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef void (WINAPI *DLL_InitDemandeExtDLL) (int HandleApp, Pointer pSession, PChar sSociete, PChar sSite, PChar sLibelleAtelier, PChar sUtilisateur);
    typedef LongBool (WINAPI *DLL_AffDemandeExt) (int Mode, PChar sNumDemande, int nQuantite, Pointer pInfoDemande);
    - Dans le *.cpp :
    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
       HMODULE hDLL = LoadLibrary("DemandeExt.dll");
       if(!hDLL)
       {
          ShowMessage("Erreur :  LoadLibrary !");
          return;
       }
     
       DLL_InitDemandeExtDLL pfn_InitDemandeExtDLL;
       DLL_AffDemandeExt pfn_AffDemandeExt;
     
       pfn_InitDemandeExtDLL = (DLL_InitDemandeExtDLL)GetProcAddress(hDLL, "InitDemandeExtDLL");
       if(!pfn_InitDemandeExtDLL)
       {
          ShowMessage("Erreur :  GetProcAdress InitDemandeExtDLL !");
          return;
       }
       pfn_AffDemandeExt = (DLL_AffDemandeExt)GetProcAddress(hDLL, "AffDemandeExt");
       if(!pfn_AffDemandeExt)
       {
          ShowMessage("Erreur :  GetProcAdress AffDemandeExt !");
          return;
       }
     
       pfn_InitDemandeExtDLL(0, &Session, "", "", "", "");
       pfn_AffDemandeExt(1, "", 1, NULL);
     
       FreeLibrary(hDLL);
    J'ai encore des erreurs, mais à l'exécution. Je pense que ça viens de ma DLL, qui ne respecte pas les standards Windows (trop pure Delphi).
    Est-ce que le code semble juste (du point de vue du C++) ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  6. #6
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Points : 55
    Points
    55
    Par défaut
    Salut,
    J'ai déjà fait une telle chose (appeler une dll delphi depuis un programme C++)

    Tu dois tou d'abord éviter les type string dans delphi et utiliser plutot le type PChar, en plus dans C++ tu dois déclarer un pointeur sur type de la fonction qui a la meme signature que celle que t'as en delphi, la charger et enfin l'appeler.

  7. #7
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par bouzaidi
    Tu dois tou d'abord éviter les type string dans delphi et utiliser plutot le type PChar
    Effectivement. Je l'avais lu aussi. J'y ai fait attention.
    Par contre, pour les entiers et les booléens, quels sont les types possibles à utiliser ?

    Voici les prototypes en Delphi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       procedure InitDemandeExtDLL(HandleApp: HWND; pSession: Pointer; const sSociete, sSite, sLibelleAtelier, sUtilisateur: PChar);   stdcall;
       function AffDemandeExt(Mode: TMode; sNumDemande: PChar; nQuantite: Longint; pInfoDmd: PInfoDemande = nil): LongBool;   stdcall;
    Citation Envoyé par bouzaidi
    en plus dans C++ tu dois déclarer un pointeur sur type de la fonction qui a la meme signature que celle que t'as en delphi, la charger et enfin l'appeler.
    C'est pas ce que j'ai essayé de faire dans le code posté au-dessus (http://www.developpez.net/forums/sho...61&postcount=5) ?
    J'ai oublié des choses ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    C'est pas ce que j'ai essayé de faire dans le code posté au-dessus (http://www.developpez.net/forums/sho...61&postcount=5) ?
    J'ai oublié des choses ?
    Non c'est bon, ton code C++ a l'air correct. Je pense qu'il ne te reste plus qu'à trouver les types qui sont compatibles avec les deux langages.

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Laurent Gomila
    Non c'est bon, ton code C++ a l'air correct. Je pense qu'il ne te reste plus qu'à trouver les types qui sont compatibles avec les deux langages.
    Ok.

    J'ai plus qu'à creuser du côté de ma DLL ...
    Si quelqu'un a des infos sur les types à utiliser, je prends.

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  10. #10
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Points : 55
    Points
    55
    Par défaut
    A mon avis ton probleme c'est l'incompatibilité de type. tu peux regarder si tu peux rendre dans le prototype delphi que des types int et pchar et boolean (c est a dire que tu dois eviter tous ce qui est TMode et THandle). Moi perso c est les seul type que j'ai utilisé en delphi je n'ai meme pas utilisé le type Pointer mais je crois il sera standarisé avec C++ aussi. Mais je suis a peu pres sur et certain qu'il s'agit d'une inadaptation de type.

  11. #11
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Points : 55
    Points
    55
    Par défaut
    voila ce lien qui pourra t'aider peut etre, c est quand je resolvais mon appel C++ a la DLL Delphi.
    http://www.developpez.net/forums/sho...d.php?t=325339

    Sinon pourkoi tu n'utilise pas de char* en C++!!!

  12. #12
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par bouzaidi
    (c est a dire que tu dois eviter tous ce qui est TMode et THandle).
    Je vais remplacer le TMode par un entier.
    Mais, le HWND, c'est pas standard Windows ?

    Citation Envoyé par bouzaidi
    Sinon pourkoi tu n'utilise pas de char* en C++!!!
    Parce que je ne sais pas les utiliser.
    J'ai du mal avec les pointeurs (surtout en C++).
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  13. #13
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 187
    Points : 55
    Points
    55
    Par défaut
    personnelement avec char* je n'ai pas trouvé de probleme pour le passage de delphi à C++. T'as qu'à declarer char* au lieu de PChar et tou le reste c est pareil... tu file une chaine de caratctere en parametre tres classiquement..
    Remplace Tmode en int pour voir ce ke ca va donner??

  14. #14
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par bouzaidi
    personnelement avec char* je n'ai pas trouvé de probleme pour le passage de delphi à C++. T'as qu'à declarer char* au lieu de PChar et tou le reste c est pareil... tu file une chaine de caratctere en parametre tres classiquement..
    Remplace Tmode en int pour voir ce ke ca va donner??
    Ca fonctionne pour le PChar Char* et pour le (TMode)LongInt Long.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       function AffDemandeExt(nMode: LongInt; sNumDemande: PChar; nQuantite: Longint; pInfoDmd: PInfoDemande = nil): LongBool;   stdcall;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef LongBool _stdcall (WINAPI *DLL_AffDemandeExt) (long Mode, Char* sNumDemande, long nQuantite, ????????);
    Il ne reste plus qu'à trouver comment passer un pointeur sur une structure.
    Comment faire ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  15. #15
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Le pointeur sur quelque chose, c'est bien le void* ?
    On a bien le droit de passer NULL à ce genre de paramètre ?

    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    En effet, void* peut être un pointeur sur n'importe quoi, et on a droit de le mettre à NULL.
    D'un autre côté, j'ignore si les pointeurs/références Delphi sont de simples pointeurs, ou s'il y a plus compliqué (comptage de références, etc.).

    Et aussi, tu dois retirer le mot _stdcall dans le typedef: C'est déjà compris dans WINAPI (un bète #define WINAPI __stdcall), et il n'est pas à la bonne place dans la ligne (seul WINAPI l'est).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  17. #17
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Médinoc
    En effet, void* peut être un pointeur sur n'importe quoi, et on a droit de le mettre à NULL.
    D'un autre côté, j'ignore si les pointeurs/références Delphi sont de simples pointeurs, ou s'il y a plus compliqué (comptage de références, etc.).
    J'ai essayé aussi l'instruction Pointer qui a l'air d'exister aussi en C++, mais ça ne marche pas mieux que void*


    Citation Envoyé par Médinoc
    Et aussi, tu dois retirer le mot _stdcall dans le typedef: C'est déjà compris dans WINAPI (un bète #define WINAPI __stdcall), et il n'est pas à la bonne place dans la ligne (seul WINAPI l'est).
    Comme ça, c'est bon ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    typedef void (WINAPI *DLL_InitDemandeExtDLL) (long HandleApp, void* pSession, Char* sSociete, Char* sSite, Char* sLibelleAtelier, Char* sUtilisateur);
    typedef LongBool (WINAPI *DLL_AffDemandeExt) (long Mode, Char* sNumDemande, long nQuantite, void* pInfoDmd);
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  18. #18
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Oui, là, ça a l'air bon.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  19. #19
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Médinoc
    Oui, là, ça a l'air bon.
    Et pourtant, j'ai une violation d'accès à l'exécution de la deuxième (à cause du paramètre pointeur).
    Y a t'il d'autres choses auxquelles il faut penser ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

Discussions similaires

  1. Utiliser des fonctions d'une DLL C++
    Par ced001 dans le forum Delphi
    Réponses: 2
    Dernier message: 09/02/2007, 16h03
  2. comment utiliser les fonctions d'une dll
    Par sebled dans le forum MFC
    Réponses: 3
    Dernier message: 24/02/2006, 16h59
  3. utilisation des fonctions d'une dll
    Par jackk dans le forum C++
    Réponses: 14
    Dernier message: 15/06/2005, 16h50
  4. Réponses: 14
    Dernier message: 15/01/2004, 01h15

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