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 6 et antérieur Discussion :

[VB6] [Langage] VB6 et les appels de dll


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [VB6] [Langage] VB6 et les appels de dll
    Bonjour,

    Pour une application j'ai besoin d'appeler une dll.
    Je l'appelle en faisant :
    Declare sub nom Lib "chemin/madll.dll" (liste des arguments)

    Ce qui est bizarre c'est que sur mon poste au bureau cette dll fonctionne très bien lorsque je l'implante dans un module excel 97.

    De plus toujours au bureau avec VB6 en mode pas à pas elle fonctionne avec quelques bugs.

    Cependant cette appli j'ai besoin de la mettre sur un portable. Et là il me dit qu'il ne trouve pas la dll à l'adresse spécifiée.

    Si j'essaye sur mon poste perso j'ai le même message, même avec les fichiers excel qui fonctionne bien au bureau.

    Pour info les postes tournent sur les environnement suivants :

    - Fixe au bureau : NT4.0 SP6
    - Portable : NT4.0 SP6
    - Perso : XP

    Dans le forum des problèmes similaires ont été traités et il semble qu'il puisse y avoir des problèmes de comptabilité entre systèmes et dll.

    Si c'est le cas, est-ce qu'il est possible de m'expliquer pourquoi.
    Est-ce qu'il existe une combine pour m'en sortir (le pb c'est que ce n'ai pas écrit la dll).


    J'espère que j'ai été assez claire.
    Je vous remercie d'avance pour toute réponse

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Enregistre le et vérifie s'il n'y a pas de fichier de depend
    Essaie toujours d'enregistrer le dll avec regsvr32 pour que le système le reconnaisse .

    Sinon il se peut que le DLL en question utilise d'autres DLL qu'il faut que tu installes (les fichiers de dépendance), normalement ce fichier porte le même nom que le dll mais avec le .dep (voir sur la1ere machine) C'est un fichier texte que tu peux ouvrir avec notpad.

    - c'est mon pire cauchemar avec crystal report 8 .

    Njara

  3. #3
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Points : 1 561
    Points
    1 561
    Par défaut Re: Enregistre le et vérifie s'il n'y a pas de fichier de de
    Citation Envoyé par njara
    Essaie toujours d'enregistrer le dll avec regsvr32 pour que le système le reconnaisse
    Non apparamment sa dll n'est pas un active X. Donc regsvr32 ne marchera pas.

    Citation Envoyé par njara
    normalement ce fichier porte le même nom que le dll mais avec le .dep (voir sur la1ere machine)
    Même remarque, ça c'est pour les active X

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Re: Enregistre le et vérifie s'il n'y a pas de fichier de de
    Citation Envoyé par Nightfall
    Non apparamment sa dll n'est pas un active X. Donc regsvr32 ne marchera pas.
    Si regsvr32 ne fonctionne pas, il faut qu'il essaie de trouver dans la base de registre du 1er PC la reférence du DLL et l'exporte pour l'importer sur les autres matos, car d'après mes experience, si le DLL n'est pas inscrit dans la base de registre le programme qui l'utilise deconne tjrs

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2002
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2002
    Messages : 608
    Points : 1 561
    Points
    1 561
    Par défaut
    Non tu n'as pas compris :

    Il existe 2 types de dll :

    Les dll simples qui contiennent une série de fonctions (exemple : les dll de windows (kernel32.dll, user32.dll, etc ...) et qui s'utilisent avec la syntaxe indiquée par Dave63, et qui ne s'enregistrent pas dans la base de registres.

    Les active X qui doivent être enregistrés dans la base de registre pour fonctionner (ce n'est pas le cas ici).

  6. #6
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour à tous

    Merci pour toutes vos réponses, elles m'ont permis de m'orienter dans le bon chemin.

    En fait le pb est que la dll que j'utilise appel une fonction dans une autre dll.

    Cependant suite à vos questions, j'aurais besoin d'un éclaircissement supplémentaire.

    Les dll que j'utilisent sont écrites en C et je croyais que dans ce cas là il n'y avait pas besoin de les enregistrer avec regsvr32. Si c'est une betise ne m'en voulais pas, c'est juste pour mieux comprendre.

    Remarque : Avec ces dll regsvr32 ne fonctionne pas.

    Merci

  7. #7
    mat.M
    Invité(e)
    Par défaut
    Les dll que j'utilisent sont écrites en C et je croyais que dans ce cas là il n'y avait pas besoin de les enregistrer avec regsvr32. Si c'est une betise ne m'en voulais pas, c'est juste pour mieux comprendre.
    Nightfall a tout dit concernant les 2 types de dll
    On pourai rajouter que:
    *Pourquoi les dll écrites en C ne s'enregistrent pas avec regsvr32 ( dans la base de registre) ? :
    -> ce sont des dll dont les mécanismes sont basés sur la technologie Component Object Model et qui n'exposent que 4 méthodes bien précises publiquement .
    Toutes les fonctionnalités encapsulées dans la dll ne sont exposées qu'à travers une interface nommée IUnknow et sont appelées via cette interface.
    Si la dll comporte une méthode CalculRacineCarreeValeur() par ex. , le programme appelant passera d'abord par cette interface IUnknow.
    L'avantage majeur de cette technologie est que n'importe quel programme écrit avec Delphi , Visual Basic...peut appeler une dll Active X
    Pour l'appeler avec VB , il faut avoir recours à CreateObject.
    Il ya des mécanismes client/serveur , in-process/out-process mais cela dépasse un peu le cadre de ce message

    *sinon il ya les dll classiques écrites en C que l'on charge avec Declare Lib


    A noter que VB 6 peut créer des dll Active X/ COM mais pas des dll "classiques"

  8. #8
    Candidat au Club
    Inscrit en
    Août 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses.

    De plus je comprend un peu mieux le monde des dll.

    Bien à vous

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

Discussions similaires

  1. Comment appeler une dll VB6 sous delphi
    Par zanoubya dans le forum Débuter
    Réponses: 6
    Dernier message: 05/10/2009, 18h04
  2. [VB6]appel de dll en C avec paramètres
    Par SerLab dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 09/02/2006, 14h49
  3. [CR9 et VB6] n'affiche pas les nouvelles donnée
    Par moumoule17 dans le forum SDK
    Réponses: 3
    Dernier message: 22/04/2005, 12h03
  4. [VB6] [MDI] Parcourir toutes les MDIForms chargées
    Par d.carail dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/10/2002, 09h07
  5. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 10h15

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