Linker langage C et langage C#

cs_Fltr Messages postés 1 Date d'inscription lundi 23 octobre 2006 Statut Membre Dernière intervention 18 juin 2009 - 18 juin 2009 à 07:11
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 18 juin 2009 à 14:21
Bonjour,
J'ai un programme console écrit en langage C comportant une vingtaine de fichiers sources (de 20 à 600 lignes).
Je voudrais faire un 'frontal' avec SharpDevelop pour avoir une interface utilisateur plus conviviale.
Je pense avoir 3 solutions:
1) faire 2 exécutables qui s'échangent des données avec les fonctions Process(), AttachConsole(..), Console.WriteLine(..), etc.
ça marche bien mais ça ne me plaît pas !

2) créer une Dll avec les sources C et la linker avec mon exécutable SharpDevelop.
ça marche bien aussi mais avoir un exe et une Dll pour un si petit programme me parait un peu disproportionné.

3) Linker en un seul exécutable le C# avec les objets générés par le compilateur C.
C'est cette solution qui me plairait mais est-ce possible et je ne sais pas comment indiquer à Sharpdevelop:
- d'utiliser les objets provenant du C (liste des objets mais où les déclarer dans sharpdevelop),
- modifs éventuelles pour la fonction unique d'entrée des objets C pour pouvoir l'appeler depuis C#.

Merci pour votre aide pour cette solution 3.

Fltr

PS: Je ne veux pas traduire le code C en code C#, trop risqué.

2 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
18 juin 2009 à 12:47
Salut

3) => je doute très fortement qu'il soit faisable

"Je ne veux pas traduire le code C en code C#, trop risqué."
La syntaxe du C et du C# unsafe (non managé) sont très proches si je me souviens bien (utilisation de pointeurs identique, etc...). Tu devrais peut-être essayer.

Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
18 juin 2009 à 14:21
Salut, la 2ème solution est la plus simple à mon avis.. Pour la 3ème on peut imager linker un .netmodule en C++/CLI avec un .netmodule en C# ( option  /target:module et /addmodule pour le compilo C# et option  /clr  et /LN pour le compilo C++ ). Maintenant faut voir jusqu'a quel point il te faudra modifier le code C natif pour qu'il soit compliant C++/CLI et verifier que le compilateur C++ autorise bien la création d'un .netmodule ne contenant pas uniquement du MSIL pure. Tiens nous au courant si t'arrives à mixer ces modules..
0
Rejoignez-nous