IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

utilisation d'un programme C


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 84
    Par défaut utilisation d'un programme 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# ??

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Hum.. en passant par du P/Invoke peut-être ?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    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:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int toto(char * s)
    {
        return strlen(s);
    }
    (oui je sais, ça sert à rien cette fonction, c'est juste un exemple...)
    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:
    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);
    }
    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
     
    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#.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Hum.. en passant par du P/Invoke peut-être ?
    Tutoriel:
    http://nico-pyright.developpez.com/t...c2005/interop/
    (partie 3, "Pinvoke et dllimport")

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Tutoriel:
    http://nico-pyright.developpez.com/t...c2005/interop/
    (partie 3, "Pinvoke et dllimport")
    Ca aussi: http://morpheus.developpez.com/dlldotnet

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Ca a d'ailleurs l'air plus clair que celui que je t'ai donné...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LZW] utilisation dans un programme open source
    Par Muesko dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 02/04/2007, 11h47
  2. Réponses: 1
    Dernier message: 23/09/2006, 16h11
  3. Réponses: 2
    Dernier message: 02/06/2006, 12h59
  4. Trouver le nombre de handle utiliser par un programme
    Par chuckboy dans le forum Windows
    Réponses: 1
    Dernier message: 19/12/2005, 23h38
  5. Lister les classes utilisées par un programme
    Par seawolfm dans le forum Général Java
    Réponses: 3
    Dernier message: 11/10/2005, 13h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo