alain8550
Messages postés1Date d'inscriptiondimanche 3 octobre 2004StatutMembreDernière intervention 2 février 2010
-
2 févr. 2010 à 01:50
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 2012
-
2 févr. 2010 à 18:10
Bonjour,
J’ai une DLL écrite en VC++ par une tierce compagnie à laquelle je dois accéder en VB.Net ou C#. Je n’ai évidemment pas accès au code source mais j’ai le fichier .h et .lib de ce DLL.
Selon moi j’ai deux possibilités pour arriver à mon objectif : soit tenter d’accéder directement à la DLL en utilisant DLLImport (ou autre méthode) ou écrire un wrapper en C++ pour que ce wrapper soit visible par Dot Net. J’ai tenté les deux et je n’ai pas eu de bons résultats. Ma question : quelle est, selon vous, la meilleure façon à utiliser pour accéder à la DLL via Dot Net? Mes connaissances en C++ sont plutôt basique je veux donc savoir ou concentrer mes recherches.
fregolo52
Messages postés1115Date d'inscriptionmercredi 15 juin 2011StatutMembreDernière intervention 6 mai 20214 2 févr. 2010 à 08:08
Salut,
Il me semble que tout le monde utilise DLLImport pour accéder au API Win32.
Pour avoir des réponses plus pertinantes, je te conseille plutot les forums .NET (C# ou VB, pas C++) où tu trouveras surement des tutoriels ou exemples de code.
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 2 févr. 2010 à 18:10
Salut, si la DLL contient uniquement des fonctions, un simple DllImport suffit, il est possible d'accéder aux methodes d'une classe avec la convention d'appel ThisCall mais pour ça la classe doit être marquée comme exportée coté C++.
Niveau performance entre un wrapper C++/CLI et DllImport c'est quasiment la même chose, tout dépend si les types sont correctement marshallés entre le code managé et non managé, il faut utiliser un maximum de types blittables, c'est à dire des types qui ont la même représentation mémoire en C++ et en C# ce qui évite au runtime de faire tout un tas de copies inutiles.