[DLL] Utiliser une dll créer par VC6.0 [Résolu]

Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
- - Dernière réponse : phantom_2005
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
- 7 mai 2010 à 15:34
Bonjour à tous,

Voila mon problème:
j'ai créé une dll avec Visual C++ 6.0 (MyDll.dll) contenant deux classes 'MyClass1' et 'MyClass2' exportées par _declspec(dllexport).
L'exportation de ces classes fonctionne très bien car je les utilise dans un autre programme (également créé en VC6.0) en incluant le .lib et le .h de la dll.

Ma question est :
En C#, comment puis-je retrouver le même comportement qu'en C++?
C'est à dire utiliser les classes exportées 'MyClass' et 'MyClass2' de la même manière que sous Visual C++ 6.0.


Merci d'avance pour vos réponses.


--------------------------------------------------------------------------------
Phantom_2005
<font color="#0000
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
3
Merci
Tu crées une fonction C++ qui renvoie le pointeur de ta classe vers C#.

// C++
EXTERN_C DLLEXPORT void GetMyClass( MyClass** ppMyClass );

// C#
[ DllImport( DLL_NAME ) ]
private static extern void GetMyClass( out IntPtr ppMyClass );

// EntryPoint est le nom décoré.
[ DllImport( DLL_NAME, CallingConvention =
CallingConvention.ThisCall, EntryPoint = "..." ) ]
private static extern void GetValue( IntPtr pMyClass , out float pfValue );

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 191 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Lutinore
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
1
0
Merci
J'ai bien trouvé quelque chose pour exporter et utiliser des fonctions mais dans ma dll, j'exporte des classes.

Je ne sais pas vraiment comment m'en sortir...


--------------------------------------------------------------------------------
Phantom_2005
<font color="#0000
Commenter la réponse de phantom_2005
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
0
Merci
Salut, pour exporter les méthodes, tu dois marquer ta classe comme exportée coté C++ (ce qui est déja fait si je comprends bien) et utiliser l'attribut CallingConvention.ThisCall avec DllImport coté C# et la premier paramètre doit être le pointeur "this".

Exporter la classe ce n'est pas possible mais tu peux passer un pointeur vers C#.
Commenter la réponse de Lutinore
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
1
0
Merci
Merci pour ta réponse Lutinore!

Qu'entends-tu par passer un pointeur vers c#?

--------------------------------------------------------------------------------
Phantom_2005
Commenter la réponse de phantom_2005
Messages postés
184
Date d'inscription
mercredi 8 décembre 2004
Statut
Membre
Dernière intervention
1 septembre 2010
1
0
Merci
Merci Lutinore,

je vais expérimenter ta solution.

J'ai également trouvé cet article qui me semble très bien...


--------------------------------------------------------------------------------
Phantom_2005
Commenter la réponse de phantom_2005