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++ Discussion :

appel de DLL en C++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Par d�faut appel de DLL en C++
    Bonjour � tous

    J�essaie depuis deux jours d'appeler en C++ une fonction contenue dans une DLL que j'ai cr�� avec Delphi (environnement dans lequel je r�alise des mod�les de machine afin de les simuler). J�ai trouv� quelques exemples mais impossible de faire ce que je souhaite.

    Dans un premier temps, je souhaiterai juste faire appel � une fonction contenue dans une DLL cr�� sous Delphi, qui effectue une addition de deux nombres double.

    Ensuite, je pense pouvoir en tirer la m�thode pour mon travail, qui consistera � appeler une proc�dure (mod�le de machine thermique) contenue dans une DLL que j�ai r�alis� sur Delphi.

    Je dois pouvoir l�appeler depuis C++ car mon mod�le est destin� � fonctionner avec un logiciel qui fonctionne principalement avec le langage C++.

    petite pr�cision le logiciel cr�� ensuite lui meme une DLL, donc nous aurons une DLL en C++ qui fera appel � une DLL Delphi.

    J�esp�re que quelqu�un pourra m�aider.
    Merci d�avance pour votre aide

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Est-ce une fonction nue que tu exportes?
    Quel compilo C++ utilises-tu?
    Delphi g�n�re-t-il un autre fichier que le .dll (un .lib par exemple) ?
    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.

  3. #3
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Par d�faut
    qu'est ce que vous entendez par nue
    dans un premier temps je voudrai simplement le faire avec une fonction addition � laquelle je donne deux nombres et elle me renvoie la solution

    sinon j'utilise microsoft visual studio
    et delphi ne g�n�re qu'un .dll pas de .lib

  4. #4
    Membre � l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Par d�faut
    Salut veuxche,

    Le pascal n'utilise pas les param�tres des fonctions DLL de la m�me fa�on que les autres langages (comme le C++). Il va les inverser donc provoquer une erreur d'ex�cution si tu n'as pas cod� ta fonction � l'int�rieure de ta librairie DLL pour qu'elle soit compatible.

    Pour ce faire, tu dois sp�cifier le mot cl� "stdcall;" au bout des fonctions que tu veux exporter.

    Il existe aussi d'autres subtilit�s � ne pas omettre lorsque l'on veut partager des librairies DLL entre le pascal et le C++, comme entre autre l'utilisation des chaines de caract�res dans les param�tres, etc...

    Je t'invite � consulter l'excellent tutoriel d'Olivier Danhan qui traite de toutes les subtilit�s � tenir compte pour ce besoin tr�s pr�cis.

    http://www.eyrolles.com/Chapitres/9782212111439/19.pdf

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Et pour le reste, il te faudra passer par les fonctions LoadLibrary / GetProcAddress / FreeLibrary pour importer ta fonction Delphi en C++.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Candidat au Club
    Inscrit en
    Novembre 2009
    Messages
    3
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 3
    Par d�faut
    merci de vos r�ponses mais je n'arrive toujours pas � r�aliser cet appel
    j'ai pourtant un exemple tr�s d�taill� que j'ai trouv� sur internet

    http://www.esanu.name/delphi/DLL/Cal...isual%20C.html

    j'ai donc essay� dans une premier temps de m'en inspirer pour appeler la dll suivante que j'ai cr�� sous delphi

    library somme;

    uses
    SysUtils,
    Classes;

    {$R *.RES}

    function ajout(a,b:double):double stdcall;
    begin
    ajout:=a+b;
    end;

    exports
    ajout index 1 name 'ajout@4';
    begin
    end.

    mais rien � faire

    ensuite j'ai cr�er la dll delphi de cet exemple et copier le language en c++ et essayer d'appeler la fonction plusone dans le programme o� j'ai besoin de faire cet appel mais ca ne marche toujours pas
    aussi faut voir la complexit� du truc par rapport � l'appel de dll sous delphi et visual basic application
    donc est ce que quelqu'un pourrait m'expliquer comment je peux le faire avec les commentaires qui vont bien �a serait super sympa
    merci

  7. #7
    Membre �m�rite Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    890
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 890
    Par d�faut
    Citation Envoy� par Mac LAK Voir le message
    Et pour le reste, il te faudra passer par les fonctions LoadLibrary / GetProcAddress / FreeLibrary pour importer ta fonction Delphi en C++.
    Pas forc�ment. Tu peux aussi aussi recr�er le .lib � partir de la DLL, avec des utilitaires comme celui-ci, par exemple, ou implib si tu as Borland.

Discussions similaires

  1. [VB6]appel de dll en C avec param�tres
    Par SerLab dans le forum VB 6 et ant�rieur
    R�ponses: 5
    Dernier message: 09/02/2006, 14h49
  2. Appel de dll
    Par david71 dans le forum WinDev
    R�ponses: 3
    Dernier message: 08/12/2005, 14h58
  3. DLL classique - appel de DLL
    Par bigboomshakala dans le forum MFC
    R�ponses: 8
    Dernier message: 12/07/2004, 14h34
  4. Appels fonctions DLL
    Par Micka91 dans le forum Autres �diteurs
    R�ponses: 1
    Dernier message: 17/02/2004, 17h32
  5. [VB6] [Langage] VB6 et les appels de dll
    Par Dave63 dans le forum VB 6 et ant�rieur
    R�ponses: 7
    Dernier message: 16/01/2003, 18h20

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