Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: ymb от Март 04, 2010, 09:34



Название: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: ymb от Март 04, 2010, 09:34
Библиотека компилируется. Примеры работают. DLL создаётся.
Как теперь привинтить библиотеку к простому проекту из одной формы?
В примерах консольные приложения. По их подобию не получается.

В книжке по использованию dll описано как подключить библиотеку двумя способами:
а) прописать в файле проекта;
пишу:
Код:
#LIBS               += -lqserialdevice0
#INCLUDEPATH   += c:\QT_proj\QSerialDevice_v0.2.0\qserialdevice\
при сборке выходит сообщение:
Код:
c:/qt/2009.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../../mingw32/bin/ld.exe: cannot find -lqserialdevice0
collect2: ld returned 1 exit status
б) с помощью переменной класса QLibrary;
Код:
    QLibrary lib("qserialdevice0");
    typedef QString(*Fct)(const QString&);
    Fct fct = (Fct)(lib.resolve("open(1)"));
В этом случае ошибок нет, но и нет выполнения функции.
В документации к библиотеке написано:
Начало работы с классом необходимо начинать с создания экземпляра объекта AbstractSerial.
Код:
AbstractSerial *serialDevice = new AbstractSerial();
Значит без создания экземпляра класса нельзя использовать фунции класса (библиотеки).

Подскажите, как правильно сделать?
   



Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: lit-uriy от Март 04, 2010, 09:37
а зачем закоментировал LIBS и INCLUDEPATH?


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: ymb от Март 04, 2010, 09:48
Извиняюсь. Разместил неисправленный код.
Конечно же пробовал без #.
Код:
LIBS               += -lqserialdevice0
INCLUDEPATH   += c:\QT_proj\QSerialDevice_v0.2.0\qserialdevice\

Или лучше исправить в предыдущем посте?


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: lit-uriy от Март 04, 2010, 09:53
>>Значит без создания экземпляра класса нельзя использовать фунции класса (библиотеки).
только статические члены класса можно использовать не создавая экземпляр класса.


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: BRE от Март 04, 2010, 09:53
Извиняюсь. Разместил неисправленный код.
Конечно же пробовал без #.
Код:
LIBS               += -lqserialdevice0
INCLUDEPATH   += c:\QT_proj\QSerialDevice_v0.2.0\qserialdevice\

Или лучше исправить в предыдущем посте?
Так укажи путь до libqserialdevice0.a
Линкер не знает где ее искать.


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: lit-uriy от Март 04, 2010, 09:55
>>В книжке по использованию dll
смотри в примерах библиотеки использование dll'ок


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: kuzulis от Март 04, 2010, 10:09
Эммм.. :
1.  библиотека по умолчанию собирается статическая!!
2. Чтобы собрать динамическую (для примера берем - в интегральном виде) ,
необходимо в файле: BuildIntegratedLibrary.pro
вместо:
Код:
CONFIG          += staticlib
#CONFIG          += dll
написать:
Код:
#CONFIG          += staticlib
CONFIG          += dll
3. По умолчанию "интегральная" библиотека (не важно статическая или динамическая) собирается в : \build\lib\qintegratedserialdevice\release\ <тут файл либы>
поэтому укажите еще в вашем *.pro файле проекта (не либы - а именно проекта) это:
Код:
QMAKE_LIBDIR    += ../../build/lib/qintegratedserialdevice/release
где ../../build/lib/qintegratedserialdevice/release - относительный путь к скомпилированной библиотеке (у вас может по-другому быть)

В принципе должно заработать.

ЗЫ: косяк - не используйте пока методы setBreak() и sendBreak(), т.к. я в спешке неправильно их нарисовал :)
упс, отставить, этих методов в релизе еще нету


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: ymb от Март 04, 2010, 10:43
Я именно так и сделал, когда компилировал библиотеку.
Код:
#CONFIG          += staticlib
CONFIG          += dll

Вопросы:
1. Какую сборку библиотеки лучше использовать, статическую или динамическую? (на авторский взгляд)
2. В примерах используется статическая сборка?
3. Для чего нужен файл version.rc?

(извините, если глупые вопросы. только начинаю заниматься Qt)


 


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: kuzulis от Март 04, 2010, 10:57
Цитировать
1. Какую сборку библиотеки лучше использовать, статическую или динамическую? (на авторский взгляд)

На любителя.

Динамическая:
(+)
1. В принципе предпочтительнее динамическая, т.к. если найдется касяк в библиотеке - то нет надобности заново пересобирать все приложение - а достаточно обновить только библиотеку.
2. Если библиотеку использует более одного приложения или в приложении имеются плагины, которые ее используют (например различные протоколы обмена, которым нужна одна библиотека для доступа к порту: Modbus, IEC-60870-101/103 и т.п.)
(-)
1. В *.nix нужно устанавливать (желательно) библиотеку в /usr/lib и т.п.

Статическая:
(+)
1. Ничо никуда не нужно устанавливать
(-)
1. см. п.1 "динамической"

(ИМХО)

Цитировать
В примерах используется статическая сборка?

Да. Для того, чтобы "хорошо" работали (сразу из каропки) примеры из /examples на винде и линухе

Цитировать
3. Для чего нужен файл version.rc?
Чтобы в винде "увековечить" имя создателя (меня)  в информации об авторе (меня) которая "вшивается" в бинарики *.dll и *.exe :)






Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: ymb от Март 04, 2010, 11:35
Спасибо!
Порт открывается.


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: NiKKSeR от Март 06, 2011, 18:33
А никто не может передать (NiKKSeR@gmail.com) какой-нибудь простейший пример использования данной библиотеки не в консольном, а GUI режиме? Никак не получается привинтить библиотеку.


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: kuzulis от Март 06, 2011, 22:13
Качай тут: http://gitorious.org/qserialdevice

пример в /test/guiapp или /test/guiapp2


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: NiKKSeR от Март 06, 2011, 22:16
Ох, спасибо огромное


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: NiKKSeR от Март 06, 2011, 23:49
А как можно с использованием собранной библиотеки создать проект с формой, где, к примеру, по нажатии кнопки происходит отправка данных?


Название: Re: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)
Отправлено: kuzulis от Март 07, 2011, 10:33
>> пример в /test/guiapp или /test/guiapp2 !!!

Или вы писатель, а не читатель?  ;)

-------
http://upload.com.ua/link/902742500/

http://upload.com.ua/get/902742500/dm852c.zip