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 :

Utiliser classes C++ dans code C#.NET


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut Utiliser classes C++ dans code C#.NET
    Bonjour,

    Je dispose d'un ensemble de classes C++ (fichiers sources) et j'aurais voulu savoir comment utiliser ces classes dans du code C#.
    J'ai trouvé pas mal de choses notamment comment importer des DLLs et réutiliser des fonctions C mais rien concernant les classes C++.

    Merci par avance

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Salut,

    Je ne suis pas expert en c++ sous visual studio, mais je pense qu'il doit être possible de creer des libraires.
    J'ai vu que tu pouvais créer un projet de type "class library" sous visual studio en anglais donc je suppose que le nom français doit être "bibliothèque" ou "librairie". Tu importes tes classes dans ce projet et tu compiles. Ceci te donnera une dll que tu ajoutes via les références dans ton projet C#.
    C'est ce que je ferai, mais attention, je n'ai jamais essayé ca donc je ne suis pas sur que ca fonctionne... Enfin ca te fait toujours une piste à explorer

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    Ouais c'est ce que je pensais faire aussi malheureusement quand je veux importer dans les références de mon projet C# il me répond que ce n'est pas un assembly ni un fichier COM valide.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 100
    Par défaut
    Arf, je pensais bien que cela risquait d'arriver :S
    Je ne peux malheureusement pas t'aider plus que ça... Il va falloir attendre le passage de quelqu'un de plus calé que moi désolé.

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    bonjour Charter

    Je vais te répondre de façon simple et précise

    Pour utiliser du code C++ dans une librairie, application .Net (C#, VB.Net, etc) tu as plusieurs possibilités

    1 - Faire de ta classe C++ un objet COM (c'est long, fastidieux et pas "si" simple que celà)

    2 - Créer des fonctions C qui appelle tes objets C++ ==> Vilain

    3 - Faire un Wrapper autour de tes classes C++. Le C++/CLI est le langage intermédiaire entre le .Net et le C++ natif. Ce langage (c'est du C++ avec quelques ajouts .Net) te permet en effet de mélanger classe Managée et classe non managée (je te laisse chercher sur le net si tu ne connais pas la différence entre les deux). Pour utiliser ton code C++ en .Net, tu vas donc devoir faire ce fameux wrapper. C'est quoi exactement ? une classe en C++ Managée qui possède un membre privé correspondant à ta classe C++ native et proposant des fonctions "mappant" tes appels

    Genre :

    void UnefonctionC++CLI()
    {
    return MonObjectC++->UnefonctionC++();
    }

    Et voilà, tu as ton wrapper

    Ainsi, dans ton projet C#, tu pourras référencer l'assembly faite, et créer des objets managés (C++/CLI) qui s'occuperont d'appeler les fonctions de la librairie C++...

    Si tu as 10 fonctions C++ que tu veux exposer, il te faudra faire 10 fonctions C++/CLI pour faire ce travail... Seul difficulté : La conversion de type entre C++ et C++/CLI. Il existe une page internet qui donne les correspondances pour faire celà, et on trouve facilement le code de conversion entre des string managés et des CString (MFC) ou des char*

    Voilà

  6. #6
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 16
    Par défaut
    Merci pour cette réponse précise.

    J'aurais juste voulu une petite précision.

    J'ai une classe A qui hérite de la classe B.
    La classe A possède une fonction f1() qui utilise la fonction f2() de la classe B.
    Si je n'utilise directement que la fonction f1() dans mon code C# je n'ai pas besoin de faire de wrapper pour f2() ?

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

Discussions similaires

  1. Utiliser variable JSP dans code java de JSP
    Par mouss4rs dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 27/01/2012, 13h48
  2. Utilisation calendar/datepicker dans projet ASP.Net
    Par arngrimur dans le forum jQuery
    Réponses: 1
    Dernier message: 23/09/2011, 12h21
  3. Utiliser var javascript dans code html
    Par -yasmine- dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/07/2010, 15h25
  4. Importer ou Utiliser solver Excel dans appli vb.net
    Par akabis dans le forum VB.NET
    Réponses: 0
    Dernier message: 02/06/2009, 16h23
  5. probleme utilisation classe java dans jsp
    Par prosper76 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/10/2006, 09h31

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