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

PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 - 9 nov. 2005 à 11:32
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 9 nov. 2005 à 15:33
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
A voir également:

5 réponses

MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
9 nov. 2005 à 11: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
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
9 nov. 2005 à 12:09
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
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
9 nov. 2005 à 14:34
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
0
PeTeRsLaStAr Messages postés 158 Date d'inscription samedi 22 juin 2002 Statut Membre Dernière intervention 27 juin 2015 1
9 nov. 2005 à 15:15
Quelle est la différencE ?

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
9 nov. 2005 à 15:33
0
Rejoignez-nous