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

Dotnet Discussion :

problème d'utilisation d'une dll


Sujet :

Dotnet

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut problème d'utilisation d'une dll
    Salut,

    J'ai récupéré un projet vb.net qui compile et s'exécute bien sur une machine.
    Mais sur ma machine j'ai une erreur lorsque j'essaye d'utiliser une dll.
    L'erreur est la suivante:
    'unable to find an entry point named <name function in dll <dll function>
    D'où provient généralement ce genre d'erreur?


    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Essaie de faire le mode pas-à-pas pour nous indiquer exactement l'endroit ou ca coince.

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Lorsque j'effectue le mode pas à pas, cela plante à l'appel d'une fonction de la dll en question:

    Dans un autre fichier la fonction est déclaré de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Sub CrtToStd Lib "dllname.DLL" ("..")

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Est ce que tu as cette dll dans le dossier par défaut de démarrage de l'application.

  5. #5
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Je ne suis pas encore familier avec visual studio, que veux tu dire par dans le dossier par défaut de démarrage de l'application?

    Je sais que cette dll se trouve dans un dossier nommé lib d'un projet autre projet inclus dans la solution.

  6. #6
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Essaie de l'inclure dans le dossier debug de ta solution.

  7. #7
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Lorsque je l'inclus dans le dossier debug de la solution, j'ai une autre erreur qui apparait à la place de la précédente:

    Unable to load DLL 'dllname.DLL': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
    Ce qui est bisard c'est que cela marche très bien sur l'autre machine!

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par WOLO Laurent Voir le message
    Essaie de l'inclure dans le dossier debug de ta solution.
    Aucun interêt puisque visilement la DLL se charge bien mais que la fonction tel qu'elle est décrite n'existe pas dans la DLL.

    Le message d'erreur est sans ambigüité.

  9. #9
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Avec dll export viewer on voit bien la fonction dans la dll en question.
    Et ca marche tres bien sur l'autre machine.

    Il ya autre chose à voir pour élucider le problème ?

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Vérifier les OS entre les machines "qui marchent" et celle "qui marche pas":

    Y'en aurait il un en 32 bits et un autre en 64 bits par hasard ?

  11. #11
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    Les deux machines utilisent un OS de 32 bits.

  12. #12
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Dommage, c'était une piste prometteuse.

    Les deux DLL sont bien parfaitement identiques au niveau du binaire ?

  13. #13
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    c'est la même solution utilisée donc oui c'est la même dll, après pour savoir si c'est identique niveau binaire je sais pas.

    Pour une autre dll j'ai ce type d'erreur aussi:

    Unable to load DLL 'dllname.DLL': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

  14. #14
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Vanito Voir le message
    c'est la même solution utilisée donc oui c'est la même dll, après pour savoir si c'est identique niveau binaire je sais pas.
    La solution c'est le programme client de la DLL je suppose. Donc je ne vois pas en quoi le fait que ce soit la même solution entraine que les deux DLLs sur les deux machines soient les même. Donc commencer par comparer les deux DLL (je parle bien sur des DLL contenant la foncion, pas des DLL ou Exe clients en .Net) et vérifier ce point.

  15. #15
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    je n'ai pas accès au code de la dll en question c'est une dll importé. Et elle se trouve dans un répértoire lib du projetB1, qui lui même est ajouté en tant que référence dll dans le projet1.

    |-projet1 (projet référence)
    |
    |-projet2
    |
    |-projet3
    | |
    | |-projetA
    | |
    | |-projetB
    | | |
    | | |-projetB1
    | | |
    | | |-ProjetB2
    | | |
    | | |-ProjetB3
    | | |

  16. #16
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    J'ai cleané et rebuilé le projetB1 (contenant la ddl), ensuite rebuilder la solution est j'ai ce genre de message qui s'affiche :

    Value of type '<typename1>' cannot be converted to '<typename2>'. Type mismatch could be due to mixing a file reference to '<filepath1>' in project '<projectname1>' with a file reference to '<filepath2>' in project '<projectname2>'. If both assemblies are identical, try replacing these references so both references are from the same location.

    Et il ya point d'exclamation à chaque projet dans références là où le projetB1 est référencé.

  17. #17
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Vanito Voir le message
    je n'ai pas accès au code de la dll en question c'est une dll importé. Et elle se trouve dans un répértoire lib du projetB1, qui lui même est ajouté en tant que référence dll dans le projet1.
    Ca me semblait évident et je n'ai jamais suggéré de comparer le code. Seulement comparfer les binaires. Ou plus simplement, copier le binaire de la "machine qui marche" à la place de celle "qui marche pas" et voir si le problème persiste.
    Le contraire est valabble aussi : mettre le binaire de la machine qui marche pas sur celle qui marche et voir si ça continue ou pas à marcher.

    Commencer par là.

    Ensuite, utiliser le Dependency Walker pour voir si les DLL qui référencent la DLL en question sont bien sur chaque machine.

    PLus vicieux : l'existence possible de plusieurs versions de la DLL sur une des mcahines et un chargement qui serait priorisé via les PATH entrainant le chargement d'une version différente de celle qu'on croit examiner. Vérifier aussi ce point en mettant le "path" en dur coté client.

    En dehors de cela, la notion de "reference" n'a aucune influence sur le chargement d'une DLL "non .Net".



    Par ailleurs, dans la mesure o

  18. #18
    Membre régulier
    Inscrit en
    Décembre 2009
    Messages
    204
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 204
    Points : 70
    Points
    70
    Par défaut
    ma question peut paraitre bête mais je ne sais absolument pas comment comparer les binaires ou remplacer les binaire d'une machine à une autre.

  19. #19
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par Vanito Voir le message
    ma question peut paraitre bête mais je ne sais absolument pas comment comparer les binaires ou remplacer les binaire d'une machine à une autre.
    Déjà regarde les versions.

    Et pour remplacer, et bien il suffit de copier le fichier.

  20. #20
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Citation Envoyé par Vanito Voir le message
    ma question peut paraitre bête mais je ne sais absolument pas comment comparer les binaires ou remplacer les binaire d'une machine à une autre.
    Tu peux bien le faire via Copier/Coller

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/02/2013, 10h57
  2. Réponses: 4
    Dernier message: 03/03/2010, 09h08
  3. Problème d'utilisation d'une dll
    Par Zocco dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/11/2007, 17h42
  4. Réponses: 18
    Dernier message: 30/08/2007, 11h23
  5. Utilisation d'une dll écrite en delphi 5 dans VB6
    Par Jean-Louis dans le forum Langage
    Réponses: 4
    Dernier message: 05/08/2002, 09h19

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