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

VB.NET Discussion :

DLL en C++ pour VB.Net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Sam Placi
    Homme Profil pro
    Développeur occasionnel
    Inscrit en
    Octobre 2019
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur occasionnel

    Informations forums :
    Inscription : Octobre 2019
    Messages : 68
    Par défaut DLL en C++ pour VB.Net
    Bonjour,

    A titre purement expérimental, j'ai créé une DLL sous VS avec C++.
    Cette DLL contient un NameSpace, avec une classe, laquelle contient une fonction.

    Le but est d'utiliser la DLL sous VB.Net. Elle est donc référencée dans un projet VB.
    L'espace de nom est visible au niveau de l'Imports et la classe semble disponible dans le code mais pas la fonction pourtant déclarée Public dans la DLL.

    Quelqu'un peut-il me mettre sur la piste pour résoudre cette "anomalie" ?

    Merci d'avance,

    Sam

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Lorsqu'on laisse à VisualStudio le soin de nous structurer le code pour l'écriture une DLL en C++, l'assistant nous ouvre d’emblée le fichier .h avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    #pragma once
    using namespace System;
    namespace NomDuProjetDLL 
    {
     
    	public ref class Class1
    		{
    // ... ... ...
    Au programmeur de déclarer là les membres private et public (et autres ...). Les corps des méthodes doivent (en principe) être écrits dans le fichier .CPP, également initiés par l'assistant.

    Il y a dans ce code (ci-dessus) un mot clé qui peut être en rapport avec le problème que tu soumets, le mot-clé ref. S'il est absent, plusieurs problèmes, dont l'invisibilité des membres publiques de la classe, empêchent d'utiliser la DLL dans VB.

    J'espère que ceci t'aidera ...

  3. #3
    Membre éclairé Avatar de Sam Placi
    Homme Profil pro
    Développeur occasionnel
    Inscrit en
    Octobre 2019
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur occasionnel

    Informations forums :
    Inscription : Octobre 2019
    Messages : 68
    Par défaut
    En effet, cela change tout !
    Je ne connaissais pas Ref en C++.
    Merci pour l'astuce Phil.

    Bonne journée,

    Sam

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Bonjour a vous deux,

    @Phil :
    Je regarde depuis un petit moment tes interventions, le contenu de tes réponses....
    Je tenais à encourager l aide que tu apportes aux membres sur différents sujets.
    Un grand merci a toi Phil.

    @sam placi :
    Tu peux utiliser l outil en ligne de commande dumpbin /exports pour lister les fonctions publiques disponibles dans ta dll c++

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    C'est super sympa de le dire !
    Merci à toi Wallace


  6. #6
    Membre éclairé Avatar de Sam Placi
    Homme Profil pro
    Développeur occasionnel
    Inscrit en
    Octobre 2019
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur occasionnel

    Informations forums :
    Inscription : Octobre 2019
    Messages : 68
    Par défaut
    Bonjour wallace1,

    Merci pour ta réponse mais il me semble que l’outil dumpbin m’informe bien moins que l’explorateur d’objets de VisualStudio, pour ce qui concerne les membres public de la DLL. Ou peut-être que je comprends mal ses résultats.

    Quant à l’explorateur d’objets, il n'a pas le même comportement si on est sur un projet C++ ou sur un projet VB et cela est perturbant.

    Avec le projet C++ ouvert, l’explorateur d’objets montre bien les membres public créés et cela, que le mot clé Ref soit présent ou non.
    Dans le projet VB, la DLL étant référencée, l’explorateur d’objets montre l’espace de noms et la classe, mais pas les membres public si le mot clé Ref est omis.

    Avec Ref, tout fonctionne …

    Sam

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/01/2020, 20h24
  2. Réponses: 11
    Dernier message: 22/03/2005, 01h04
  3. dll builder c++ pour projet visual..?
    Par iznotek dans le forum MFC
    Réponses: 6
    Dernier message: 12/01/2005, 00h03
  4. Driver postgre pour asp.net
    Par vonbier dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/10/2003, 13h35

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