Russian Qt Forum

Qt => Общие вопросы => Тема начата: Urvin от Август 31, 2009, 14:47



Название: [qt4.5, win] Проблема с подключением dll
Отправлено: Urvin от Август 31, 2009, 14:47
Очень сильно надеюсь на помощь - мне одному не справиться.

Есть такая микросхема для общения девайсов и ПК по usb - ft232rl. Разработчик микросхемы предлагает для общения использовать свою библиотеку, уже скомпилированную в ftd2xx.dll.

Авторам программ для ПК предлагается использовать саму ftd2xx.dll, заголовок ftd2xx.h и ftd2xx.lib.
Также на сайте разработчика есть примеры для нескольких языков программирования, и, что понятно Qt диалекта среди них нет.
В сети найден только один пример с открытыми сорцами под Qt: IO Expander Control (http://www.mikrocontroller.net/articles/USB_IO_Expander), но мне никак не раскрутить его до включения библиотеки.

У меня никак не выходит подключить эту библиотеку к моему проекту. Пытаюсь всячески: и подключая и заголовок, и lib, и только заголовок с LIBS += -lftd2xx, и всяческими производными вариантами.

Через QLibrary("ftd2xx") подключиться удается, вот только при различном использовании функций (документированном) программа вылетает. Так что обход препятствия у меня не вышел).

Меня также смущает, что функции в заголовке расписаны так:
Код
C++ (Qt)
FTD2XX_API
FT_STATUS WINAPI FT_OpenEx(
   PVOID pArg1,
   DWORD Flags,
   FT_HANDLE *pHandle
   );
 
FTD2XX_API
FT_STATUS WINAPI FT_ListDevices(
PVOID pArg1,
PVOID pArg2,
DWORD Flags
);


Расскажите пожалуйста, как правильно подключить эту dll!

Файлы ftd2xx.dll, ftd2xx.h и ftd2xx.lib можно скачать отсюда (http://narod.ru/disk/12635796000/ftd2xx_libs.rar.html) или с сайта разработчика. (http://www.ftdichip.com/Drivers/CDM/CDM%202.04.16%20WHQL%20Certified.zip).


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: Авварон от Август 31, 2009, 15:26
компилятор какой? мингв вроде не дружит с библиотеками, собранными в студии


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: Urvin от Август 31, 2009, 15:29
mingw, да.

фишка в том, что этот IO Expander Control (пример на qt) у меня собирается. Но он написан человеком, привыкшим грузить самосвалы детским савочком.


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: Авварон от Август 31, 2009, 15:30
так а там библиотека эта используется?:)


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: Urvin от Август 31, 2009, 15:41
так а там библиотека эта используется?:)

да, но у меня не выходит ту программу "разломать" до непосредственно правильного включения библиотеки.
.pro там выглядит так:
Код
C++ (Qt)
HEADERS += USBCommunication\FTD2XX.H
LIBS += USBCommunication\FTD2XX.LIB
 


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: niXman от Август 31, 2009, 18:34
Динамически используй.


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: Urvin от Август 31, 2009, 18:45
Динамически используй.
Динамически попробовал. Трабл в том что функции можно вызывать по-разному, т.е. в библиотеке работает перегрузка или условные переходы в зависимости от типов параметров. И часть функционала попросту отваливается, хотя другая часть может работать.


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: zenden от Август 31, 2009, 19:23
Написал что-то такое:

 
Код
C++ (Qt)
#include <windows.h>
#include "ftd2xx.h"
 
...
 
FT_STATUS ftStatus = FT_ListDevices(0, 0, FT_LIST_BY_INDEX | FT_OPEN_BY_SERIAL_NUMBER);
       if (ftStatus!=FT_OK) //Get first device serial number
       {
               printf("Couldn't get FTDI device name");
               return ;
       }
 
       FT_HANDLE ftHandle = FT_W32_CreateFile(0,
               GENERIC_READ|GENERIC_WRITE,
               0,
               0,
               OPEN_EXISTING,
               FILE_ATTRIBUTE_NORMAL | FILE_FLAG_OVERLAPPED | FT_OPEN_BY_SERIAL_NUMBER,
               0); //

в .pro файле

Код:
LIBS += ftd2xx.lib

Всё скомпилировалось без проблем, запускается и даже не вылетает. ЧЯДНТ?


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: Urvin от Сентябрь 01, 2009, 10:38
Код:
#include <windows.h>
  :D

Простите дурака, люблю в чистом поле проблему найти)


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: niXman от Сентябрь 02, 2009, 04:00
ппц!
и в этом была вся проблема?
попытаюсь найти форум на котором ты не задавал этот вопрос.


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: kuzulis от Сентябрь 02, 2009, 10:33
можно вместо windows.h подключить qt_windows.h :)


Название: Re: [qt4.5, win] Проблема с подключением dll
Отправлено: Hammer от Февраль 07, 2013, 11:25
Некропост, ага

Чо ж у меня-то не работает? Везде undefined reference. Специально создал пустой прожект и в корень положил все два файла, вписав их в .pro
Упомянутый топикстартером IO Expander у меня тоже собирается...

[UPDATE]
С файлами .h и .lib из IO Expander все работает. Дллка в системе не та у меня? или надо этот .lib конвертнуть в чегонить?

Ай, х с ним, сделаю через QLibrary