cs_Fltr
Messages postés1Date d'inscriptionlundi 23 octobre 2006StatutMembreDernière intervention18 juin 2009
-
18 juin 2009 à 07:11
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 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é.
krimog
Messages postés1860Date d'inscriptionlundi 28 novembre 2005StatutMembreDernière intervention14 février 201549 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 ! -
Lutinore
Messages postés3246Date d'inscriptionlundi 25 avril 2005StatutMembreDernière intervention27 octobre 201241 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..