Comment trouver un entryPoint dans une dll ? Questions également sur 'DllImport'
PeTeRsLaStAr
Messages postés158Date d'inscriptionsamedi 22 juin 2002StatutMembreDernière intervention27 juin 2015
-
9 nov. 2005 à 11:32
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 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
MorpionMx
Messages postés3466Date d'inscriptionlundi 16 octobre 2000StatutMembreDernière intervention30 octobre 200857 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
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 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 :