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

Visual Studio Discussion :

Probléme de chargement d'un fichier DLL dans visual studio


Sujet :

Visual Studio

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 25
    Points : 6
    Points
    6
    Par défaut Probléme de chargement d'un fichier DLL dans visual studio
    bonjour tout le monde
    je suis entrain de développer un code pour la lecture des TAG en RFID et donc j'ai un fichier dll qui contient les fonctions d'ouverture de buffer ......... de fermeture .....etc
    donc le probléme est dans le chargement de ce fichier en fait c'est le SDK de lecteur RFID sur cet appareil
    j'essaye de l'enregistrer par RegSvr32 "Reader2036.dll" et même de donner la chemin complète mais ça ne marche pas aussi
    merci

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    regsvr32 sert uniquement pour les DLL COM. Est ce le cas de ta DLL ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 25
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    regsvr32 sert uniquement pour les DLL COM. Est ce le cas de ta DLL ?
    non c'est un DLL d'un SDK (Reader2036.dll) de l'appareil donc je pense qu'il est ne pas COM

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 youssef_rjili Voir le message
    non c'est un DLL d'un SDK (Reader2036.dll) de l'appareil donc je pense qu'il est ne pas COM
    Donc, le regsrv32 n'a pas à être utiisé.

    A partir de là, trois cas possibles :

    • est ce un SDK .Net ? peu probable, mais si oui, tu la mets en référence dans ton projet.
    • est ce une bibliothèque de fonctions exportées ? si oui, tu les déclares dans ton programme avec l'attribut DllImport.
    • est ce une bibliothèque de classe C++ : dans ce cas, ça se corse, elles ne sont pas utilisables directement en .net; il faut que tu écrives un wrapper en C++/CLI.


    Bref, sans plus d'info sur ta librairie, il est difficile d'en dire plus.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 25
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Donc, le regsrv32 n'a pas à être utiisé.

    A partir de là, trois cas possibles :

    • est ce un SDK .Net ? peu probable, mais si oui, tu la mets en référence dans ton projet.
    • est ce une bibliothèque de fonctions exportées ? si oui, tu les déclares dans ton programme avec l'attribut DllImport.
    • est ce une bibliothèque de classe C++ : dans ce cas, ça se corse, elles ne sont pas utilisables directement en .net; il faut que tu écrives un wrapper en C++/CLI.


    Bref, sans plus d'info sur ta librairie, il est difficile d'en dire plus.

    ok merci
    le fournisseur de produit me donner un code C# avec un SDK (Reader2036.cs et Reader2036.dll) et dans le Reader.cs il utilise DllImport par exemple dans Reader2036.cs
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
            [DllImport("Reader2036.dll")]
            public static extern int Desfire_Anticoll(byte[] UID, ref byte errorCode);
     
     
            [DllImport("Reader2036.dll")]
    	    public static extern int Desfire_Rats(byte CID, byte[] RespData, ref byte errorCode);
     
     
            [DllImport("Reader2036.dll")]
    	    public static extern int Desfire_Pps(byte CID, byte Div, ref byte errorCode);
     
     
            [DllImport("Reader2036.dll")]
    	    public static extern int Desfire_Authenticate(byte CID, byte KeyNo, byte[] Key, ref byte errorCode);
     
     
            [DllImport("Reader2036.dll")]
    	    public static extern int Desfire_ChangeKeySettings(byte CID, byte KeySettings, ref byte errorCode);
     
     
            [DllImport("Reader2036.dll")]
            public static extern int Desfire_GetKeySettings(byte CID, ref byte KeySettings, ref byte MaxNoOfKeys, ref byte errorCode);
     
     
            [DllImport("Reader2036.dll")]
    	    public static extern int Desfire_ChangeKey(byte CID, byte KeyNo, byte[] OldKey, byte[] NewKey, ref byte errorCode);
     
     
            [DllImport("Reader2036.dll")]
    	    public static extern int Desfire_GetKeyVersion(byte CID, byte KeyNo, ref byte KeyVer, ref byte errorCode);

    donc je ne sais où est le probléme encore le Reader2036.dll et Reader2036.cs dans le projet aussi :/ mais le programme génére cet exception
    Can't find PInvoke DLL 'Reader2036.dll'.
    dés le premier appel de fonction à ce ligne

    int result = Reader2036.PowerOn(comboBoxPort.SelectedItem.ToString());
    Merci

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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
    il faut que ta DLL soit sur le même répertoire que ton .exe (Nom_du_Projet/bin/debug si tu es en train de développer).

    Si c'est le cas, et que cela ne marche toujours pas, il est possible que :

    - cette DLL ait une dépendance avec une autre DLL qu'il ne trouve pas. Pour cela, il faut le détail de l'exception avec éventyuellement l'InnerException associée (tu ne donnes pas assez d'info, là).

    - autre possibilité, un problème de compatibilité 32/64 bits; là encore, tu compile en quel mode (AnyCpu, x86, x64 ?) et quel est ton OS ?

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 25
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    il faut que ta DLL soit sur le même répertoire que ton .exe (Nom_du_Projet/bin/debug si tu es en train de développer).

    Si c'est le cas, et que cela ne marche toujours pas, il est possible que :

    - cette DLL ait une dépendance avec une autre DLL qu'il ne trouve pas. Pour cela, il faut le détail de l'exception avec éventyuellement l'InnerException associée (tu ne donnes pas assez d'info, là).

    - autre possibilité, un problème de compatibilité 32/64 bits; là encore, tu compile en quel mode (AnyCpu, x86, x64 ?) et quel est ton OS ?
    même probléme je met les fichiers de SDK dans Nom_projet/Debug/bin/
    mais je ne sais pas encore la même exception

    j'utilise windows XP et le mode x86

  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 : 62
    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 youssef_rjili Voir le message
    même probléme je met les fichiers de SDK dans Nom_projet/Debug/bin/
    mais je ne sais pas encore la même exception

    j'utilise windows XP et le mode x86
    Merci de poster, comme déjà, dit le détail de l'exception (avec l'InnerException notamment).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 25
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Merci de poster, comme déjà, dit le détail de l'exception (avec l'InnerException notamment).
    L'exception System.MissingMethodException n'a pas été gérée
    Message="Can't find PInvoke DLL 'Reader2036.dll'."
    StackTrace:
    at Reader2036CS.MainFrm.btnConnect_Click()
    at System.Windows.Forms.Control.OnClick()
    at System.Windows.Forms.Button.OnClick()
    at System.Windows.Forms.ButtonBase.WnProc()
    at System.Windows.Forms.Control._InternalWnProc()
    at Microsoft.AGL.Forms.EVL.EnterMainLoop()
    at System.Windows.Forms.Application.Run()
    at Reader2036CS.Program.Main()
    InnerException:

    Merci Bluedeep
    vous voyez que c'est une exception de chargement de .dll

  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 : 62
    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
    Justement, il n'y visiblement aucun problème au chargement de la DLL.

    C'est la fonction qui n'est pas trouvée dedans.

    En effet, il lève une MissingMethodException, ce qui signifie que :

    - il trouve la DLL (sinon il léverait une DllNotFoundException).
    - il la charge.
    - mais ne trouve pas la méthode dedans.

    Je te conseille d'examiner la DLL avec le Dependency Walker pour controler ses fonctions exportées.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2011
    Messages : 25
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Justement, il n'y visiblement aucun problème au chargement de la DLL.

    C'est la fonction qui n'est pas trouvée dedans.

    En effet, il lève une MissingMethodException, ce qui signifie que :

    - il trouve la DLL (sinon il léverait une DllNotFoundException).
    - il la charge.
    - mais ne trouve pas la méthode dedans.

    Je te conseille d'examiner la DLL avec le Dependency Walker pour controler ses fonctions exportées.
    pour la fonction il existe dans le fichier j'utilise l'outil que vous avez conseiller mais même si je modifier la fonction il reste la même probléme , je prend une copie de nom_projet/bin/debug/ sur Pocket pc et ça marche le programme fonctionne sauf qu'il n'affiche pas le TAG RFID dans Le listBox en tout cas Merci BlueDeep autre probléme aussi le TAG RFID merci je pense que c'est une autre chose pour vous

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/04/2011, 15h26
  2. Réponses: 0
    Dernier message: 29/05/2009, 13h47
  3. Réponses: 2
    Dernier message: 05/03/2007, 14h21
  4. sqlite3.dll dans Visual Studio 2005 ?
    Par Luke58 dans le forum SQLite
    Réponses: 5
    Dernier message: 02/03/2007, 15h58

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