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

Dotnet Discussion :

[visual studio] créer une classe en C++ utilisable en VB .net


Sujet :

Dotnet

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [visual studio] créer une classe en C++ utilisable en VB .net
    Bonjour !

    J'ai beau chercher, je ne trouve pas de réponse clair à mon problème !

    Voila, je souhaite créer différents objets (classes) en C++.
    Puis, je voudrais réaliser une interface graphique en vb.net qui utilise des objets définis dans les classes écrites en c++.
    D'où ma question: Comment faire !?

    Je sais comment intégrer une dll avec des fonctions écrites en C pour vb.net avec l'ajout d'une référence, mais je n'arrive pas à intégrer des classes.
    J'ai essayer les méthodes "bibliothèque de classes" ou directement "générer une dll" en jouant avec les paramètres de mon projet, mais cela ne fonctionne pas.

    Je vous remercie d'avance pour vos conseils !

  2. #2
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Salut,
    As-tu une raison particulière de vouloir créer tes classes en C++ ? Sinon fais-les directement en VB.NET...
    Sinon tu peux créer les classes en C++/CLI, comme ça tu peux accéder aux fonctionnalités de bas niveau de C++, et aux fonctionnalités de .NET, et ton assembly sera utilisable dans un programme .NET.
    Si vraiment tu es obligé d'utiliser du C++ natif, tu peux toujours créer un wrapper .NET pour ces classes en C++/CLI.
    Il y a un tuto assez complet sur l'interop :
    http://nico-pyright.developpez.com/t...c2005/interop/

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    bonjour tomlev, tout d'abord, merci pour ta réponse !

    je sais bien que l'on peut créer des classes en vb.net, mais comme je souhaite appliquer des méthodes assez lourdes en terme de calcul sur mes objets, il me paraît plus intéressant de les coder en C/C++.
    J'étais déja tombé sur la doc que tu as envoyé mais je ne comprends pas tout. Notamment ce qu'est le wrapper. Je vais donc me replonger dedans si tu penses que ça peut m'aider ! Autre question, que faut il pour coder en C++/CLI ? Visual studio suffit il ?

    J'ai quand même un peu avancé par rapport à tout à l'heure. En utilisant le modèle "bibliothèque de classes", j'ai pu crée un dll de ma classe. Ensuite, en vb.net, je fais un Imports "le nom de ma dll" et j'ai accès à mon objet. Cependant, coder mon c++ via le modèle "bibliothèque de classes" semble plus contraignant que de le coder comme si c'était un projet "win32". En effet, je n'arrive pas à créer des tableaux avec le 1er modèle, alors que je n'ai jamais eu de problème dans l'autre cas. J'espère que je suis clair

    désolé de faire si long !

  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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par thune123 Voir le message
    bonjour tomlev, tout d'abord, merci pour ta réponse !

    je sais bien que l'on peut créer des classes en vb.net, mais comme je souhaite appliquer des méthodes assez lourdes en terme de calcul sur mes objets, il me paraît plus intéressant de les coder en C/C++.
    Si c'est pour une question de performance, ce ne sera pas tellement moins rapide en VB.NET... lors de la première exécution d'un exécutable .NET, le MSIL (code pour la machine virtuelle) est compilé en natif à la volée, et c'est le code natif qui est exécuté. La principale raison d'utiliser du C++, à mon avis, c'est si tu veux faire des traitements de bas niveau, pour faire des pilotes par exemple, ou encore si tu veux utiliser une librairie qui ne propose qu'une API C ou C++.
    Aussi, fais attention à la distinction entre C++ et C++/CLI (C++ adapté pour .NET) : un projet en C++ classique est compilé directement en code natif, alors qu'un projet C++/CLI est compilé en MSIL, donc tu auras grosso modo le même résultat que si tu l'avais fait en VB.NET ou C#.

    Citation Envoyé par thune123 Voir le message
    J'étais déja tombé sur la doc que tu as envoyé mais je ne comprends pas tout. Notamment ce qu'est le wrapper. Je vais donc me replonger dedans si tu penses que ça peut m'aider ! Autre question, que faut il pour coder en C++/CLI ? Visual studio suffit il ?
    Oui, c'est suffisant.

    Citation Envoyé par thune123 Voir le message
    J'ai quand même un peu avancé par rapport à tout à l'heure. En utilisant le modèle "bibliothèque de classes", j'ai pu crée un dll de ma classe. Ensuite, en vb.net, je fais un Imports "le nom de ma dll" et j'ai accès à mon objet. Cependant, coder mon c++ via le modèle "bibliothèque de classes" semble plus contraignant que de le coder comme si c'était un projet "win32". En effet, je n'arrive pas à créer des tableaux avec le 1er modèle, alors que je n'ai jamais eu de problème dans l'autre cas. J'espère que je suis clair

    désolé de faire si long !
    Quand tu fais un projet "Bibliothèque de classes" (dans la catégorie CLR), c'est du C++/CLI, et non du C++ natif. C'est peut-être la raison de tes difficultés... Quel est le problème exactement avec les tableaux ?
    Je ne connais pas très bien C++/CLI, mais il me semble que c'est comme du C++ avec quelques mots-clés et opérateurs en plus.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Voici des explications supplémentaires

    Pour mon choix de C++ :
    Je me suis orienté pour un développement en c++ car je suis amené à faire des traitements sur des images, comme des produits de convolutions, des fonctions de filtrage, etc (en gros des fonctions qui utilisent beaucoup de boucles et calculs), et je pensais que l'implémentation et l'exécution serait plus rapide avec cette partie en C++.

    Pour mon problème de tableau:
    voila ce qui marche ->
    * je fais une méthode avec pour argument un ou des Integer en C++
    * je crée le dll
    * je peux excuter cette fonction depuis vb.net

    ce qui ne marche pas ->
    * si ma méthode demande en paramètre un tableau ou pointeur (j'ai essayé avec les 2 écritures), lors du passage en vb.net, le compilateur me dit que ma fonction prend en compte un type de paramètre non pris en charge...

    En tout cas merci pour tes précisions !

Discussions similaires

  1. Réponses: 3
    Dernier message: 10/01/2014, 12h53
  2. Réponses: 14
    Dernier message: 28/02/2007, 09h53
  3. Réponses: 7
    Dernier message: 05/12/2006, 08h33
  4. Créer une classe commune à +sieurs fiches
    Par rtg57 dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/05/2006, 17h58
  5. Réponses: 4
    Dernier message: 08/10/2005, 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