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 :

Creation dll et importation


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut Creation dll et importation
    Bonjour a tous,

    Je voudrais creer une dll, bon de ce coté là j'y arrive pas de soucis, le probleme c'est que je veux que cette dll soit uniquement appelé par la conception par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Declare Function mafonction Lib "madll.dll" (ByVal var As Integer) As Integer
    mais je ne veux pas que l'on puisse intégré la dll via la méthode "ajouter une reference" a un projet. Je veux que l'on puisse uniquement appeler les fonctions comme cela et si quelqu'un veut integré la dll dans le projet via "ajouter une reference" que cela ne puisse pas et donner l'erreur "a reference to...can not be add....make sure valide assembly com or component".

    mais je n'arrive pas a appeler mes fonctions j'ai des erreurs d'appel, avec entry point invalide ou dll inexistante..

    avec dumbin pour verifier ma dll et savoir quelles sont les fonctions exportables j'obtiens en resulats :

    2000 .reloc
    2000 .rsrc
    2000 .sdata
    2000 .text

    donc je pige rien ^^
    j'ai chercher pas mal de choses mais je trouve pas ce que je veux.
    si quelqu'un peut m'indiquer un tuto ou un bouquin, je suis prenneur merci.

    Cordialement.

  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 : 44
    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
    Bah si tu peux appeler les fonctions de la DLL via P/Invoke (Public Declare ...), ce n'est pas un assembly .NET mais une DLL native, donc tu ne pourras de toutes façons pas l'ajouter comme référence...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut re
    bonjour, merci d'avoir repondu,

    Je ne programme pas en c++ mais en VB.net, as tu un tuto sur les dll native en vb.net ? merci d'avance

  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 : 44
    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
    Je n'ai jamais parlé de C++... et il est impossible de faire une DLL native en VB.NET
    D'ailleurs je ne comprends vraiment pas l'intérêt de ce que tu cherches à faire... à quoi ça sert d'imposer un système complexe pour appeler les fonctions de ta DLL alors qu'il y en a un beaucoup plus simple ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    ok donc c'est impossible en vb.net.

    Tu comprends pas c'est simple, prend exemple de la dll "kernel32.dll" de windows, il est impossible de l'ajouter dans un projet de programmation avec "add reference" mais tu peux appeler ses fonctions dans une classe..

    je veux faire la meme chose c'est simple.

    mais bon si c'est impossible en vb.net c'est tout ce que je vouais savoir donc, merci.

  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 : 44
    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 angus17 Voir le message
    Tu comprends pas c'est simple, prend exemple de la dll "kernel32.dll" de windows, il est impossible de l'ajouter dans un projet de programmation avec "add reference" mais tu peux appeler ses fonctions dans une classe..

    je veux faire la meme chose c'est simple.
    Je comprends bien ce que tu veux faire... ce que je ne comprends pas, c'est pourquoi tu veux le faire ? Ca n'a strictement aucun intérêt, à part de rendre plus compliquée l'utilisation de la DLL.

    kernel32.dll s'utilise de cette manière parce que c'est une DLL native, et qu'il n'y a donc pas d'autre façon de faire. Mais si tu fais une DLL en VB.NET, c'est un assembly .NET, tu peux donc l'utiliser de façon beaucoup plus simple en ajoutant une référence

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    justement c'est ce que je ne voulais pas faire......je sais tres bien comment creer une dll et l'ajouter en reference.

    ce que je voulais faire par cette methode c'est rendre invisible les classes, du moins les appels de fonctions pour les rendre uniquement programmable par celui qui a creer et compiler la dll. Comme ca meme si par le bié de dumpbin ou autre tu peux voir les fonctions de la dll, tu ne peux pas en connaitre les paramètres.

    je sais que ca rend plus compliqué la chose mais c'est ce que je voulais.

    Je vais voir pour creer ma dll en c++ puis faire appel a elle apres dans un projet vb.net.

    Merci en tout cas d'avoir repondu c'est sympa.

  8. #8
    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 : 44
    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 angus17 Voir le message
    ce que je voulais faire par cette methode c'est rendre invisible les classes, du moins les appels de fonctions pour les rendre uniquement programmable par celui qui a creer et compiler la dll. Comme ca meme si par le bié de dumpbin ou autre tu peux voir les fonctions de la dll, tu ne peux pas en connaitre les paramètres.
    Bah il suffit de ne pas rendre publiques les classes et fonctions que tu veux masquer...

    De toutes façons, dumpbin ne permet pas de voir les fonctions et classes d'un assembly .NET ; mais d'autres outils le permettent, comme .NET Reflector par exemple. La seule façon d'éviter ça est d'obfusquer le code

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    heu...je ne suis pas un pro du vb.net ca m'interresse alors.

    Donc il est possible de masquer des fonctions ou classes d'une dll extrerne passée en reference et donc l'appeler par la suite. Ca je savais pas....

    faut les declarer comment alors ? si pas en public ?

  10. #10
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    La visiblité "friend" permet de restreindre l'utilisation de types ou de méthodes à l'intérieur de l'assembly où elles sont déclarées (équivalent C# : "internal"). En somme, à l'intérieur de cette assembly ces types et méthodes sont publics tandis qu'à l'extérieur ils sont privés.

    MSDN : Access levels in Visual Basic

    PS : Quand on doit utiliser un langage, il est recommandé de d'abord se documenter, au moins sur les bases. Ça évite pas mal de problèmes et d'erreurs.
    PPS : Quant à Kernel32.dll, si VS t'affiche ce message c'est uniquement parce que c'est une biblio native. Un code C++, en revanche, travaille avec toutes les fonctions de cette biblio de façon transparente (sauf celles qui ont une visiblité restreinte : mots-clés private/protected + friend en C++).

  11. #11
    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 : 44
    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 angus17 Voir le message
    faut les declarer comment alors ? si pas en public ?
    En rien du tout
    Ou alors en Friend si tu préfères être explicite, mais c'est le choix par défaut (enfin il me semble, avec VB.NET je suis jamais sûr... je connais mieux C#)

    Pour être exact :
    - les types (classes, modules...) peuvent être Public ou Friend (visible seulement dans l'assembly ou il est déclaré)
    - les membres de types (propriétés, méthodes...) peuvent être Public, Friend, Private (visible seulement dans le type), Protected (visible seulement dans le type et les types dérivés), ou Protected Friend (visible seulement dans le type, les types dérivés, et dans l'assembly où c'est déclaré)

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Par défaut
    Bon vu que y'a que certaines classes que je veux "coder" j'ai trouver une solution, je passe pour une andouille mais pas grave.

    j'ai creer une classe "parametre" , puis dans mes fonctions je declare comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function MaFonction(ByVal Parameters As List(Of Parameter)) As Object
    comme ca je peux faire comme je veux. merci en tout cas.

  13. #13
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Ouhlà ! C'est moche et inefficace. "Friend" permettait parfaitement de répondre à ton besoin, il a été fait pour ça. Si tu n'as pas compris son usage je t'invite à te repencher dessus avant de mettre en oeuvre une solution si tordue.

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

Discussions similaires

  1. Creation DLL réutilisable avec WinDEv
    Par CTotophe85 dans le forum C++
    Réponses: 2
    Dernier message: 09/09/2008, 16h25
  2. Creation dll et utilisation dans appli C#
    Par moulefrite dans le forum Windows Forms
    Réponses: 5
    Dernier message: 19/08/2008, 09h46
  3. probleme creation dll
    Par devin59 dans le forum C#
    Réponses: 3
    Dernier message: 21/01/2008, 20h54
  4. creation dll et wmf
    Par CaptainChoc dans le forum C++
    Réponses: 7
    Dernier message: 17/08/2006, 23h26
  5. creation DLL dev-cpp
    Par gaut dans le forum Dev-C++
    Réponses: 4
    Dernier message: 29/01/2004, 18h15

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