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 :

[Résolu] Création et Utilisation d'un DLL dans mes autres projets


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut [Résolu] Création et Utilisation d'un DLL dans mes autres projets
    Bonjour à tous,

    Je viens de créer une DLL nommée CSendMail qui contient les deux classes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Class CSendMail
    ...
    End Class
     
    Private Class CSendMailError
    ...
    End Class
    Dans mon projet de test, j'ajoute la référence à ma bibliothèque
    J'ajoute la ligne d'import dans le code de mon projet test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Imports CSendMail
    ...
    Et je ne parviens pas comprendre pourquoi la déclaration de ma classe dans mon projet test doit inclure le namespace de la première classe de la DLL, alors que pour la deuxième c'est inutile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim MySendMail As CSendMail.CSendMail
    MySendMail = New CSendMail.CSendMail
     
    Dim MyError As CSendMailError
     
    En effet pour la classe CSendMail si j'écris 
    Dim MySendMail As CSendMail
    J'obtiens l'erreur BC30182; Type attendu

    Si quelqu'un à une idée je suis preneur, merci

  2. #2
    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,

    1 - Si tu ouvres ton projet de type librairie et que tu doubles cliques sur "My Project" dans l'explorateur de solutions (ou Propriétés du projet) tu te rendras compte que l'espace de noms racine porte certainement le même nom que ta classe "CSendMail".
    2 - On est d'accord que tes 2 classes (CSendMail et CSendMailError) se situe dans le même espace de noms (CSendMail) donc certainement le même projet de type librairie DLL.
    3 - Si dans un autre projet tu fais un imports CSendMail alors c'est tout a fait normal que lorsque tu instancies CSendMailError il ne faille pas explicitement le précéder de l'espace de noms (CSendMail) de ta DLL car tu l'as déjà importés une fois.

    ----> En revanche ce qui m'interpelle c'est que tes 2 classes dans ta DLL ne sont pas déclarées Public mais Private ????? Comment souhaites-tu les utiliser dans un autre projet depuis ta DLL compilée ou ta référence ???

    ++

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2019
    Messages : 3
    Par défaut
    Merci Wallace1 pour tes explcations.

    Citation Envoyé par wallace1 Voir le message
    Bonjour,

    1 - Si tu ouvres ton projet de type librairie et que tu doubles cliques sur "My Project" dans l'explorateur de solutions (ou Propriétés du projet) tu te rendras compte que l'espace de noms racine porte certainement le même nom que ta classe "CSendMail".
    2 - On est d'accord que tes 2 classes (CSendMail et CSendMailError) se situe dans le même espace de noms (CSendMail) donc certainement le même projet de type librairie DLL.
    3 - Si dans un autre projet tu fais un imports CSendMail alors c'est tout a fait normal que lorsque tu instancies CSendMailError il ne faille pas explicitement le précéder de l'espace de noms (CSendMail) de ta DLL car tu l'as déjà importés une fois.

    ++
    En effet, mes deux classes sont bien dans la même DLL, et j'ai supprimé l'espace de nom racine dans les propriétés du projet de ma DLL et en effet je peux a présent instancier mes classes sans passer par l'espace de nom.
    Ca sera plus lisible

    Citation Envoyé par wallace1 Voir le message
    Bonjour,

    ----> En revanche ce qui m'interpelle c'est que tes 2 classes dans ta DLL ne sont pas déclarées Public mais Private ????? Comment souhaites-tu les utiliser dans un autre projet depuis ta DLL compilée ou ta référence ???

    ++
    Bien vu
    Dans ma DLL les classes sont bien déclarées Public.
    C'est qui écrivant sur le forum ai fait l'erreur

    Merci encore pour ton aide

  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
    Pas de quoi

    Tu peux passer ton topic en résolu. (Le préfixe [Résolu] ne suffit pas à signifier qu'il est résolu)
    Il faut éditer ton 1er message et cocher résolu ...un truc du genre je n'ai jamais utiliser cette fonction car je n'ai jamais ouvert de topic en ce sens ...lol

    Bon codage++

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

Discussions similaires

  1. [MySQL] Pourquoi dois-je utiliser des "quotes penchées" dans mes requêtes?
    Par v4np13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/02/2008, 23h23
  2. Réponses: 7
    Dernier message: 27/04/2006, 16h58
  3. Réponses: 9
    Dernier message: 06/04/2006, 18h40
  4. Utilisation d'une dll dans une application.
    Par jamais34 dans le forum MFC
    Réponses: 5
    Dernier message: 31/03/2006, 10h39
  5. Utilisation d'une dll dans C
    Par Korma dans le forum Autres éditeurs
    Réponses: 12
    Dernier message: 08/12/2005, 19h28

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