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

Discussions diverses VB Discussion :

dll en C pour vb6


Sujet :

Discussions diverses VB

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut dll en C pour vb6
    Bonjour,
    Créer des dll en C compatibles VB6 tuto que j'utilise pour apprendre à compiler une dll avec vc++ 6.0 me pose problème.

    en voici le code :

    Def.h
    Code c : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include "windows.h"
    #define export __declspec (dllexport)
     
    export void __stdcall HelloWorld(void );


    fichier.c
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "Def.h"
     
    void __stdcall HelloWorld(void )
    {
        MessageBox(NULL,"Hello !","Message",MB_OK);
    }
     
     
     .def
    LIBRARY Fonctions
    DESCRIPTION "Essai de dll"
    EXPORTS
    HelloWorld _HelloWorld@0

    dans module vb6
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Sub HelloWorld Lib "Fonctions.dll" ()
    la dll crée est stockée dans le rep. system de windows.
    L'auteur ne montre pas comment faire pour exécuter la dll dans vb6.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
    ...
    End Sub
    Merci.

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    la dll crée est stockée dans le rep. system de windows.
    Déjà, si tu es sur un Windows 64 bits, ce qui est probable, ce n'est pas C:\windows\system32\ qu'il faudra mettre la dll, mais dans c:\windows\sysWOW64\
    L'auteur ne montre pas comment faire pour exécuter la dll dans vb6.
    Dans le même module que là ou tu as ton Private Declare ... tu pourras simplement l'utiliser comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Test()
        HelloWorld()
    End Sub
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Bonjour,
    Comme VB6 semble ne pas fonctionner sous win 10 je l'ai installé sur Xp en virtual box.
    la compilation de la dll se fait aussi sur Xp vc++ 6.0, ma dll est bien dans le rep win32.

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut
    Comme VB6 semble ne pas fonctionner sous win 10
    Si VB6 peut fonctionner même sous window 11, mais faire doute l'installation sous session administrateur, puis lancer l'éditeur en tant qu'administrateur pour ne pas avoir de problèmes de droits d’accès au différentes sources qu’utilisera le projet/programme.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    J'ai fait plusieurs tentatives d'installation de vb6 sous win 10, plusieurs procédures existent sut le net (en anglais).
    Je me rappelle suivre quelques unes, en vain.
    Quant à ma dll, ca ne marche pas, Hello devrait s'afficher quelque part , text1.text par exemple ...

  6. #6
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Re

    Lire la totalité de cette discussion, il me semble qu'il te manque l'inscription de ta DLL dans la base de registre, tu trouveras comment le faire de la discussion mise en lien.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  7. #7
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Re

    tu trouveras comment le faire de la discussion mise en lien.
    je ne vois pas !

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Re

    il me semble qu'il te manque l'inscription de ta DLL dans la base de registre, tu trouveras comment le faire de la discussion mise en lien.
    J'ai essayé la base de registre en exécutant : regsvr32 c:\Fonctions.dll.
    je reçois le msg : "C:\Fonctions.dll a été chargé mais le point d'entrée DllRegisterServer est introuvable.
    Ce fichier ne peut être enregistré."

  9. #9
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    normalement les dll de type api win32 n'ont pas besoin d'être registrées, à la différence des dll ActiveX ou COM.

    Tu dis que ça fonctionne pas, mais tu obtiens quoi comme message d'erreur ?
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 123
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 123
    Points : 1 630
    Points
    1 630
    Par défaut
    le code de la fonction dans la dll est supposé afficher un MessageBox (boite de dialogue) contenant "Hello!" avec "Message" en titre.
    (Dans le tuto, la partie .def doit être dans un fichier, par exemple Fonctions.def pour être cohérent avec le nom de la dll et ce fichier doit accompagner la dll)

  11. #11
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    59
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par umfred Voir le message
    ....
    J'ai recompilé le code C apparemment le même que le premier, ma DLL est crée 0 error, 0 warning.
    J'ai mis ma dll dans le rep. system32
    je l'ai ajouté a Vb6, ça marche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Fonctions.h
    #include "windows.h"
    #define export __declspec (dllexport)
     
    export void __stdcall HelloWorld(void );
    fichier.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include "Fonctions.h"
     
    void __stdcall HelloWorld(void )
    {
        MessageBox(NULL,"Hello !","Message",MB_OK);
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Fonctions.def
    LIBRARY Fonctions
    DESCRIPTION "Essai de dll"
    EXPORTS
    HelloWorld _HelloWorld@0
    VB6:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Declare Sub HelloWorld Lib "Fonctions.dll" ()
    Private Sub Command1_Click()
    HelloWorld
    End Sub

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

Discussions similaires

  1. DLL .NET pour VB6
    Par Catleeya dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 05/07/2019, 21h33
  2. extension pour vb6 en .exe ou .dll
    Par toss.net dans le forum C#
    Réponses: 0
    Dernier message: 10/07/2010, 08h23
  3. DLL .NET pour vb6 : Tableau de chaine
    Par BacChusx dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/10/2007, 11h32
  4. Quels outils ActiveX pour VB6
    Par PCBleu dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/12/2005, 18h30
  5. dll builder c++ pour projet visual..?
    Par iznotek dans le forum MFC
    Réponses: 6
    Dernier message: 12/01/2005, 00h03

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