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:
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
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"); } }
(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).
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 );
Cette même doc précise aussi la chose suivante:
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 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.
J'utilise Qt 4.7.0 avec Visual C++ 2010 Express.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:
Merci pour votre aide.
Julien
Partager