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

Qt Discussion :

QLibrary::resolve avec une DLL Microchip


Sujet :

Qt

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 10
    Par défaut QLibrary::resolve avec une DLL Microchip
    Bonjour à tous,

    J'essaye d'utiliser une DLL (HID class.dll fournie par Microchip) mais la méthode QLibrary::resolve renvoie la valeur 0.

    Voici mon code:
    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
    QLibrary HID_class("HID class");
    if (HID_class.load())
    {
        QMessageBox::information(this, "HID class", "Loaded");
     
        typedef void (*HIDClassInitFunction)(unsigned short, unsigned short, unsigned short, unsigned short);
        HIDClassInitFunction HIDClassInit = (HIDClassInitFunction)HID_class.resolve("HIDClassInit");
     
        if (HIDClassInit)
        {
            QMessageBox::information(this, "HIDClassInit", "OK");
            HIDClassInit(0x04D8, 0x0032, 64, 250);            
        }
        else
        {
            QMessageBox::critical(this, "HIDClassInit", "NOK");
        }
    }
    La méthode est définie comme ceci (dans la doc Microchip)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    static void HIDClassInit(
        unsigned int VendorID, 
        unsigned int ProductID, 
        unsigned int BuffSize, 
        unsigned int Timeout
    );
    (il est aussi indiqué que les paramètres sont des "16 bit unsigned integer", c'est pourquoi j'ai remplacé les int par des short, mais cela ne fonctionne pas dans les deux cas).

    Cette même doc précise aussi la chose suivante:
    The compilation setting must be /clr, /clr:pure or /clr:safe. This dll is a .NET assembly, so it can’t be used with a compilation setting that produces pure unmanaged code.
    Je ne sais pas vraiment ce que cela signifie, et je me demande si c'est réelement compatible avec ce qui est indiqué dans la doc Qt:
    The symbol must be exported as a C function from the library. This means that the function must be wrapped in an extern "C" if the library is compiled with a C++ compiler. On Windows you must also explicitly export the function from the DLL using the __declspec(dllexport) compiler directive, for example:
    J'utilise Qt 4.7.0 avec Visual C++ 2010 Express.

    Merci pour votre aide.

    Julien

  2. #2
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Par défaut
    D'après ta doc c'est pas une dll c mais une dll .net. je ne pense pas que ce type de dll soit compatible qt.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Août 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 10
    Par défaut
    C'est bien ce que je craignais
    Merci pour ta réponse en tout cas.
    Finalement je me suis débrouillé en utilisant quelques fonctions de la bibliothèque SetupAPI comme indiqué dans d'autres exemples Microchip.

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/08/2005, 00h39
  2. Association d'une icone avec une dll
    Par ybruant dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 14/07/2005, 11h10
  3. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 11h37
  4. Appeler une API sans liaison avec une DLL
    Par mat.M dans le forum x86 32-bits / 64-bits
    Réponses: 10
    Dernier message: 13/07/2004, 02h22
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 13h20

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