salut tlms,
alors j'ai un programme écris en C, je veux l'utilisé dans une applications , alors es ce qu'il y a un moyen de le faire avec C# ??
Version imprimable
salut tlms,
alors j'ai un programme écris en C, je veux l'utilisé dans une applications , alors es ce qu'il y a un moyen de le faire avec C# ??
Hum.. en passant par du P/Invoke peut-être ?
Salut,
Essaie de faire un minimum attention à l'orthographe s'il te plait, c'est un peu pénible à lire... (4 fautes dans la même phrase, et encore je ne compte pas le "tlms"...)
Pour répondre à ta question en un mot: oui, c'est possible.
Après, ça dépend de ce que tu veux faire exactement...
- si tu veux juste lancer le programme, tu peux le faire en utilisant la classe System.Diagnostics.Class (il y a un exemple dans la doc).
- si tu veux utiliser des fonctions de ton programme à partir du code C#, il faut compiler ton programme comme une DLL (appelons-là "MesFonctions.dll"). Ensuite, tu utilises l'interopérabilité (interop) pour appeler les fonctions. Par exemple, pour utiliser la fonction "toto" définie comme suit:
(oui je sais, ça sert à rien cette fonction, c'est juste un exemple...)Code:
1
2
3
4
5 int toto(char * s) { return strlen(s); }
Il faut que tu déclares la fonction C dans ton code C#. Si tu as plusieurs fonctions C à utiliser, le mieux est de les regrouper dans une classe statique:
Ensuite tu peux l'utiliser comme n'importe quelle fonction C#:Code:
1
2
3
4
5
6
7
8 using System.Runtime.InteropServices; public static class MesFonctions { [DllImport("MesFonctions.dll")] public static extern int toto(string s); }
Code:
1
2
3
4 string s = "Hello world !"; int t = MesFonctions.toto(s); Console.WriteLine("La chaîne {0} a une longueur de {1} caractères", s, t);
EDIT: au fait, chaque type de données C peut être "mappé" vers un type C#: par exemple "char *" en C correspond au type "string" en C#. Si ton code C utilises des structures, il faut définir les mêmes en C#.
Tutoriel:
http://nico-pyright.developpez.com/t...c2005/interop/
(partie 3, "Pinvoke et dllimport")
Ca aussi: http://morpheus.developpez.com/dlldotnet ;)