Appeler une DLL C++/MFC à partir d'un code C# - C#/.NET managed - Programmation
Marsh Posté le 29-04-2006 à 12:51:38
slash33 a écrit : Question de novice. Pas taper si la question vous paraît idiote. |
oui, cf mon plugin dans ma signature
le plugin est en fait constitué de 2 fichiers : gen_hfr.dll, qui est une dll en C++ managé, dont le rôle est d'utiliser des classes présentes dans un autre fichier : Plugin.dll, en C# et placé dans le GAC
voici le code :
Code :
|
c'est tout con hein ?
Marsh Posté le 29-04-2006 à 12:58:43
ah merde, j'ai lu la question à l'envers
pour appeler une dll à partir de C#, faut faire du P/Invoke, ie il faut déclarer la fonction que tu veux utiliser, en marshallant (convertissant) les types natifs en types .NET, ce qui peut se réveler rapidement un casse tête sans nom.
ex pour utiliser la fonction SendMessage de user32.dll en C#
Code :
|
si tu tiens à te lancer là dedans, va faire un tour sur ce site, ça aide bien :
http://www.pinvoke.net/
Marsh Posté le 29-04-2006 à 13:38:39
Merci pour les renseignements.
Le pourquoi de ma question:
Comme tu le sais, je viens d'intégrer une nouvelle société. Elle est confrontée à une problématique sur laquelle je suis succeptible d'agir : doit on amorcer la migration vers .NET des moyens de développement ?
Les exigences portent surtout sur la possibilité de réutiliser les composants métiers développés dans la société au cours des années d'exercice précédentes. Il s'agit en fait de DLLs C++/MFC et VB. Les points d'entrée acceptent non pas des types standards mais un objet instance d'une classe spécifique qui gère de manière extensible les paramètres et les valeurs de retour. Cet artifice permet de stabiliser les interfaces des modules métiers.
Marsh Posté le 20-10-2006 à 11:13:30
Slt,
Et qu'en est il de l'instanciation, depuis C#, d'une classe définie dans une DLL C++ ? Est-ce possible ? Ou est-ce une abération ?
Un exemple de code serait le bienvenu ...
Marsh Posté le 20-10-2006 à 11:42:26
ReplyMarsh Posté le 20-10-2006 à 13:25:43
Merci,
Ca a pas l'air simple ....
Marsh Posté le 20-10-2006 à 14:04:42
Bah c'est basé sur le dialogue par evenement, avec quelques subtilité de configuration. Mais globalement je trouve ça plutot propre. Ca permet aussi de se passer d'interface en C et de se refiler que des types de base.
Marsh Posté le 29-04-2006 à 11:51:37
Question de novice. Pas taper si la question vous paraît idiote.
J'ai besoin de savoir si c# permet l'utilisation de code C++ (non managé) inclus dans des DLL. Si oui comment fait-on ?
Merci d'avance.
Message édité par slash33 le 29-04-2006 à 11:54:49