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# ??
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 ?
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
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 C : Sélectionner tout - Visualiser dans une fenêtre à part
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 C# : Sélectionner tout - Visualiser dans une fenêtre à part
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 C# : Sélectionner tout - Visualiser dans une fenêtre à part
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#.
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Tutoriel:
http://nico-pyright.developpez.com/t...c2005/interop/
(partie 3, "Pinvoke et dllimport")
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Ca aussi: http://morpheus.developpez.com/dlldotnet![]()
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Pas de questions techniques par MP ! Le forum est là pour ça...
Tutoriels : Les nouveautés de C# 6 - Accès aux données avec Dapper - Extraction de données de pages web à l'aide de HTML Agility Pack - La sérialisation XML avec .NET (Aller plus loin) - Les markup extensions en WPF
Partager