Comment trouver un entryPoint dans une dll ? Questions également sur 'DllImport'

Signaler
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Bonjour à tous.

Voilà je vous explique mon problème.

Le but général de la question se résume à : comment importer une dll COM de type VB6 dans une application C # ?
Je ne fais pas mon 'noob' et j'ai déjà parcouru en long en large et en travers (peut être pas assze ? ) ce forum et j'ai vu d'excellents tutoriaux qui m'ont permis d'avancer un peu plus dans cette recherche... (entre autre http://www.csharpfr.com/code.aspx?ID=11491)

Cependant...
1) En supposant que je cherche à utiliser la librairie qui se trouve dans ma dll appellée MaDllEnVB.dll
Je vais faire

[DllImport("MaDllEnVB.dll")]

Ok. Mais lorsque je compile il me demande de préciser mon point d'entrée... Alors je pose la question suivante :
Comment identifier le point d'entrée d'une DLL ? Enfin je ne comprends pas trop les arguments à fournir égaelmeent : CharSet, CallingConvention et SetLastError... Si quelqu'un peut m'aider là dessus ?

2) On suppose que ce premier point est réglé. Soit.
D'après l'exemple que j'ai pu voir, il faudrait faire la manip pour Chaque fonction ? Donc si je dois récupérer 10 fonctions de cette dll, je dois taper à chaque fois [DllImport] etc *10 ?

2bis) Et si je souhaite récupérer une variable globale, et non pas une fonction ? je fais comment ???

Merci 1000 fois pour votre future aide...
Si vous souhaitez des questions ou que je détaille, n'hésitez pas :)

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher

5 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
55
L'entryPoint, c'est le nom de la méthode que tu souhaites utiliser. Tu as besoins d'utiliser EntryPoint lorsque tu veux utiliser ta Méthode avec un nom différent de l'original.

Et il faut autant d'attributs DllImport que de fonction que tu souhaites declarer

Mx
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1
Merci.
J'ai trouvé plusieurs liens qui peuvent être intéressants...
http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/csref/html/vcwlkplatforminvoketutorial.asp

et http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpref/html/frlrfSystemRuntimeInteropServicesDllImportAttributeClassTopic.asp

Cependant une question perdure.
Dans l'entrypoint, faut il appeler la dll de type 'interop.MyDll.dll' ? ou 'MyDll.dll' ?

Enfin dans certains exemples le fichier est suivi de .dll, alors que dans d'autres non...
Est ce obligatoire ou pas ?

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41
Salut, ne confonds pas COM Interop qui permet d'utiliser un wrapper managé pour un objet COM et PInvoke qui permet d'appeler les fonctions d'une librairie "native".

Neodante a fait sur son blog un très bon tuto pour PInvoke :

http://blogs.developpeur.org/neodante/articles/9744.aspx
Messages postés
158
Date d'inscription
samedi 22 juin 2002
Statut
Membre
Dernière intervention
27 juin 2015
1
Quelle est la différencE ?

****************************************************
Il n'y a pas de pb sans solutions : il faut juste trouver le temps pour les chercher
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
41