Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Futur Membre du Club
    Inscrit en
    avril 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 69
    Points : 16
    Points
    16

    Par défaut Appeler une fonction présente dans une dll

    Bonjour,

    Je souhaiterai appeler une fonction présente dans une dll que j'ai moi même coder et non une dll Win32.

    Avez-vous des informations pour cela?

  2. #2
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 614
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 614
    Points : 16 091
    Points
    16 091

    Par défaut

    Citation Envoyé par beni34 Voir le message
    Bonjour,

    Je souhaiterai appeler une fonction présente dans une dll que j'ai moi même coder et non une dll Win32.

    Avez-vous des informations pour cela?
    c'est très simple, le mot clé External permet d'indiquer que la fonction se trouve dans la dll indiquée.

    Code :
    1
    2
    3
    4
    5
    6
    7
     
     
    function NomFonction(...):...; external 'madll.dll';
     
    begin
      NomFonction(...);
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  3. #3
    Futur Membre du Club
    Inscrit en
    avril 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 69
    Points : 16
    Points
    16

    Par défaut

    Je developpe en delphi prism et je ne croi pas que cette syntaxe est supporté. Aprés le external il semble que je ne puisse pas mettre de chaine de caractère.

  4. #4
    Membre éprouvé
    Homme Profil pro André
    Directeur de projet
    Inscrit en
    février 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Nom : Homme André
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : février 2006
    Messages : 515
    Points : 416
    Points
    416
    Ils ne savaient pas que c'était impossible, alors ils l'ont fait !

  5. #5
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 614
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 614
    Points : 16 091
    Points
    16 091

    Par défaut

    Citation Envoyé par beni34 Voir le message
    Je developpe en delphi prism et je ne croi pas que cette syntaxe est supporté. Aprés le external il semble que je ne puisse pas mettre de chaine de caractère.
    Delphi Prism n'est pas Delphi ni Delphi.Net

    Il faut passer par un DLLImport mais l'aide sur le Wiki n'est pas très utile.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  6. #6
    Futur Membre du Club
    Inscrit en
    avril 2009
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : avril 2009
    Messages : 69
    Points : 16
    Points
    16

    Par défaut

    J'ai essayé avec le DllImport mais sans succés.
    J'ai une erreur du typ: EntryPointNotFoundException.
    Mais le but c'est d'appeler une methode d'une dll en dynamique.

  7. #7
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 080
    Points : 14 312
    Points
    14 312

    Par défaut

    external, tu peux oublier, c'est statique !

    Tu parles d'une fonction ?
    N'est-ce pas plutôt une méthode ?


    Tu es l'auteur de l'Appelant et de la DLL
    Les deux seront en .NET ? ou l'une des parties sera en Win32 ?

    Comme le fait remarqué Paul Toth, il existe trois produits
    - Delphi : Win32 (... euh Chimpenfeu va nous abolir cela !)
    - Delphi.NET : Intégration du .NET dans l'IDE Delphi 8 à 2007, c'est une encapsulation par CodeGear
    - Delphi Prism : Plugin apportant le langage Delphi comme véritable langage .NET au sein Visual Studio

    Tu es bien dans Visual Studio ?
    Si oui, c'est bien Delphi Prism, ce qui est nettement mieux que Delphi.NET même si cela n'apporte rien par rapport au C# !
    Et dans ce cas, pense à préciser [PRISM] dans le sujet, car la communauté ici s'attend à l'ancien Delphi.NET

    Si mélange Win32 / .NET
    Je ne connais pas Delphi.NET mais comme en C# tu dois pouvoir assurer que ton objet supporte l'Automation (option d'InterOp), ainsi tu pourras enregistrer ta DLL comme une bibliothèque de Type (en plus d'être une Assembly)
    Je ne l'ai pas fait moi même, mais j'ai utilisés des DLL nommés MonObjet.InterOp.DLL qui exposait la TLB et utilisant en interne l'assembly de MonObjet.DLL écrite en VB.NET

    Ensuite, c'est du COM, cela reste transparent du côté appelant

    Tu peux oser le CrossTalk si tu veux utiliser une Assembly en Win32

    Si pure .NET (des deux côtés)
    Il faudrait pousser plus loin la techno .NET
    Comme tu utilises Delphi Prism, tout est ouvert, cet exemple C# devant être adaptable :
    Développer une application Windows en .NET de façon modulaire
    Tu dois pouvoir utiliser les Assembly du Framework qui permet de charger dynamiquement des Assembly (installées)
    Même en Delphi.NET cela semble possible : Utilisation des AppDomain en .NET, donc cela sera encore en Delphi Prism !





    DllImport c'est justement .NET appelant DLL Win32, si tu n'as pas fait une DLL Win32, il est logique que cela ne fonctionne pas !

    FAQ Delphi.NET - Comment puis-je appeler une fonction présente dans une DLL win32 ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •