Russian Qt Forum
Ноябрь 23, 2024, 07:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Использование библиотеки QSerialDevice 0.2.0 (Qt 4.6.0)  (Прочитано 22382 раз)
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();
Значит без создания экземпляра класса нельзя использовать фунции класса (библиотеки).

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

Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Март 04, 2010, 09:37 »

а зачем закоментировал LIBS и INCLUDEPATH?
Записан

Юра.
ymb
Гость
« Ответ #2 : Март 04, 2010, 09:48 »

Извиняюсь. Разместил неисправленный код.
Конечно же пробовал без #.
Код:
LIBS               += -lqserialdevice0
INCLUDEPATH   += c:\QT_proj\QSerialDevice_v0.2.0\qserialdevice\

Или лучше исправить в предыдущем посте?
« Последнее редактирование: Март 04, 2010, 09:51 от ymb » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #3 : Март 04, 2010, 09:53 »

>>Значит без создания экземпляра класса нельзя использовать фунции класса (библиотеки).
только статические члены класса можно использовать не создавая экземпляр класса.
Записан

Юра.
BRE
Гость
« Ответ #4 : Март 04, 2010, 09:53 »

Извиняюсь. Разместил неисправленный код.
Конечно же пробовал без #.
Код:
LIBS               += -lqserialdevice0
INCLUDEPATH   += c:\QT_proj\QSerialDevice_v0.2.0\qserialdevice\

Или лучше исправить в предыдущем посте?
Так укажи путь до libqserialdevice0.a
Линкер не знает где ее искать.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #5 : Март 04, 2010, 09:55 »

>>В книжке по использованию dll
смотри в примерах библиотеки использование dll'ок
Записан

Юра.
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #6 : Март 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(), т.к. я в спешке неправильно их нарисовал Улыбающийся
упс, отставить, этих методов в релизе еще нету
« Последнее редактирование: Март 04, 2010, 10:11 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
ymb
Гость
« Ответ #7 : Март 04, 2010, 10:43 »

Я именно так и сделал, когда компилировал библиотеку.
Код:
#CONFIG          += staticlib
CONFIG          += dll

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

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


 
« Последнее редактирование: Март 04, 2010, 10:45 от ymb » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #8 : Март 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 Улыбающийся




Записан

ArchLinux x86_64 / Win10 64 bit
ymb
Гость
« Ответ #9 : Март 04, 2010, 11:35 »

Спасибо!
Порт открывается.
Записан
NiKKSeR
Гость
« Ответ #10 : Март 06, 2011, 18:33 »

А никто не может передать (NiKKSeR@gmail.com) какой-нибудь простейший пример использования данной библиотеки не в консольном, а GUI режиме? Никак не получается привинтить библиотеку.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #11 : Март 06, 2011, 22:13 »

Качай тут: http://gitorious.org/qserialdevice

пример в /test/guiapp или /test/guiapp2
Записан

ArchLinux x86_64 / Win10 64 bit
NiKKSeR
Гость
« Ответ #12 : Март 06, 2011, 22:16 »

Ох, спасибо огромное
Записан
NiKKSeR
Гость
« Ответ #13 : Март 06, 2011, 23:49 »

А как можно с использованием собранной библиотеки создать проект с формой, где, к примеру, по нажатии кнопки происходит отправка данных?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #14 : Март 07, 2011, 10:33 »

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

Или вы писатель, а не читатель?  Подмигивающий

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

http://upload.com.ua/get/902742500/dm852c.zip
« Последнее редактирование: Июль 19, 2011, 20:25 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.052 секунд. Запросов: 23.