Russian Qt Forum

Qt => Общие вопросы => Тема начата: VadimR от Ноябрь 01, 2012, 18:01



Название: Работа с QLibrary
Отправлено: VadimR от Ноябрь 01, 2012, 18:01
Вечер добрый. Возникла проблема с импортом функций из dll'ки.
Имеем библиотеку AtUsbHID.dll, скрин документации прилагается.

Вылетает segfault на findHidDevice(VID, PID).
Код
#include <QtCore/QCoreApplication>
#include <QTextStream>
#include <QLibrary>
 
int main(int argc, char *argv[])
{
   QCoreApplication a(argc, argv);
   QLibrary lib("AtUsbHid.dll");
   QTextStream cout(stdout);
 
   unsigned int VID = 0x0583;
   unsigned int PID = 0xB031;
 
   if (!lib.load()) {
       cout << "Error" << endl;
   } else cout << "Library loaded." << endl;
 
   typedef bool (*MyPrototype)(unsigned int, unsigned int);
   MyPrototype findHidDevice = (MyPrototype) lib.resolve("findHidDevice");
 
   if (findHidDevice) {
       cout << "Function \"findHidDevice\" loaded!" << endl;
       if (findHidDevice(VID, PID))
           cout << "Work it!" << endl;
   }
 
   cout << "End." << endl;
   return a.exec();
}

(http://s2.uploads.ru/jchpg.png)

PS Мог ошибиться разделом


Название: Re: Работа с QLibrary
Отправлено: xokc от Ноябрь 01, 2012, 22:23
Проверить соглашение о вызовах (скорее всего там stdcall)


Название: Re: Работа с QLibrary
Отправлено: VadimR от Ноябрь 02, 2012, 19:55
Действительно. Спасибо!