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

MFC Discussion :

dll sous visual basic utilisable par visual c++


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut dll sous visual basic utilisable par visual c++
    est - il possible de cr�er une DLL avec visual basic (6) et de l'utiliser avec visual c++ (6) ?
    si oui on fait comment? car je ne vois pas comment g�n�r� le fichier lib ou/et h.

  2. #2
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par d�faut
    bonjour

    il faut charger la library dynamiquement.
    par exemple si tu as une fonction de ta DLL du genre
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    int GetListTag(int SrPortNo,BOOL axe1,BOOL axe2,BOOL axe3,BOOL axe4,BOOL axe5,BOOL axe6);
    tu cree un pointeur sur ta fonction avec:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    typedef int (CALLBACK* LPFNGETTAG)(int,BOOL,BOOL,BOOL,BOOL,BOOL,BOOL);
    et des que tu as besoin de ta fonction

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    HINSTANCE hClcltr=LoadLibrary("madll.dll");
     
    cordialement
     
    LPFNGETTAG   lpfnGetTag;
    lpfnGetTag = (LPFNGETTAG)GetProcAddress(hClcltr,"GetListTag");
     
    IdOk = lpfnGetTag (mynumport,0,1,0,0,0,0); // appel de la fonction
     
    FreeLibrary( hClcltr );

  3. #3
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Il faut faire attention aux types utilis�s dans ta fonction visual basic.

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    bonjour et merci beaucoup pour vos r�ponses,
    j'ai fait un essai
    en VBA j'ai une DLL qui � une fonction bob():
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    Public Function bob()
        MsgBox "hello"
    End Function
    en visual c++ j'ai cr�� un projet vide

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include<windows.h>
     
    typedef int (CALLBACK* LPFNGETTAG)(void);
     
    int main(void)
    {
    HINSTANCE hClcltr=LoadLibrary("dll_de_test.dll");
     
    //cordialement
     
    LPFNGETTAG   lpfnGetTag;
    lpfnGetTag = (LPFNGETTAG)GetProcAddress(hClcltr,"bob");
     
     lpfnGetTag (); // appel de la fonction
     
    FreeLibrary( hClcltr );
    return 0;
    }
    alors j'obtiens un programme qui plante m�chament...
    ai-je oubli� quelque chose?
    merci d'avance

  5. #5
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    en VB, une dll c'est pas obligatoirement un objet COM ?

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    j'en sais rien du tout!!!

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    tout ce que je peux dire c'est que en visual basic j'appel la fonction de la dll comme �a:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Private Declare Function bob Lib "dll_de_test.dll" () As Long
     
    Private Sub Form_Load()
     
        Dim plop As Object
        Shell "regsvr32 /s dll_de_test.dll"
        Set plop = CreateObject("Nom_de_la_dll.Bibliotheque_1")
     
        plop.bob
    End Sub

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    j'ai remarqu� que le projet sous visual basic est une dll activeX, c'est une vrai dll? ou c'est encore un truc inutilisable?

  9. #9
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Ton code C++ ne v�rifie pas les erreurs. Il suffit que la fonction bob n'existe pas pour que GetProcAddress renvoie NULL, et alors �a plante.
    Commence par cr�er avec succ�s une dll normal en VB (-> forum VB), et verifie qu'elle exporte bien la fonction attentdue avec �a:
    http://www.dependencywalker.com/
    ensuite ton code C++ devrait fonctionner, une fois modifi� pour tester les erreurs de chaque fonction.
    Si tu ne peux cr�er que des ActiveX avec VB, hum, c'est pas gagn�.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    en fait il me faudrai l'inverse de �a (c'est � dire lire les dll de vb sn c++):
    http://rp.developpez.com/vb/tutoriels/dll/
    or j'ai lu qur les dll en visual basic sont en fait des activeX ...
    vous pensez que c'est mort?

  11. #11
    R�dacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par d�faut
    non, mais il faut faire autrement

    c'est un projet MFC ?

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    je sais pas trop,
    en fait je n'arrive pas, et un d�veloppeur est passer me voir, � utiliser une bibliot�que en c++ (c'est un fichier tlb), en fait j'ai d�ja poser des question dessu l�:
    http://www.developpez.net/forums/vie...779580#2779580
    or comme on peux le lire, je n'ai aucun pb en visual basic avec cette bibliot�que. Or avec le travail que je dois r�aliser, l'application devient d�ja lourde, sachant que en c++ je sais faire sans pb la m�me chose alors qu'en vb, je connais moins et je perd du tps, sans compter la lourdeur. bref je cherche � cr�er un dll en VB pouvant faire interm�diaire entre le programme que control� par la librairie tlb et mon programme en c++.
    As-tu une id�e?

  13. #13
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Un tlb, �a d�crit un composant COM. On sort du cadre du C++, c'est de la programmation COM. Si tu utilises les MFC, avec #import (note que ce n'est pas une directive C++ standard, on est dans du sp�cifique COM avec VC++), VC++ va te g�n�rer des classes pour facilement te servir de ton ActiveX. Utilise ces classes, car sinon, c'est grosso modo infaisable.

  14. #14
    mat.M
    Invit�(e)
    Par d�faut
    Citation Envoy� par nico-pyright(c)
    en VB, une dll c'est pas obligatoirement un objet COM ?
    Bien vu !
    Effectivement c'est une dll COM
    Pour appeler la fonction bob() il faut appeler

    *CoInitialize pour demarrer COM
    *CoCreateInstanceEx avec comme param. le GUID de la dll

    *QueryInterface sur le pointeur de bob()

    Aller voir sur www.codeproject il ya peut-etre un exemple


    Sinon il ya aussi avec #import dont parle Aurelien ou bien #pragma comment nom_dll

  15. #15
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    j'ai trouv� �a:
    http://www.codeproject.com/com/vb_from_vc.asp
    �a � l'aire bien

  16. #16
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    112
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 112
    Par d�faut
    juste un etit mot pour dire qu'avec le tutorial que j'ai donn�, �a marche nickel!!!!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Convertir Visual Basic 6 en visual Basic 2010 Express
    Par excalybur dans le forum VB.NET
    R�ponses: 0
    Dernier message: 04/12/2014, 19h58
  2. dll non reconu par visual basic 6
    Par olosimam dans le forum C#
    R�ponses: 1
    Dernier message: 18/11/2009, 01h27
  3. R�ponses: 1
    Dernier message: 07/07/2006, 15h49
  4. D'Excel � Access par Visual Basic 6.0
    Par moane dans le forum Macros et VBA Excel
    R�ponses: 4
    Dernier message: 12/04/2006, 17h25
  5. Acc�s R�seau a une base de donn�es Access par Visual Basic
    Par thegreatbato dans le forum VBA Access
    R�ponses: 5
    Dernier message: 06/01/2006, 14h04

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