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?
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function NomFonction(...):...; external 'madll.dll'; begin NomFonction(...); end;
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.
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.
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 ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager