Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] Работа с библиотекой libusb, Работа с библиотекой libusb 
:(
    Опции темы
ISerg1986
Дата 14.1.2014, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.1.2014

Репутация: нет
Всего: нет



Решил начать новую тему. Буду задавать свои вопросы тут, по мере их появления. Надеюсь, что тема будет многим полезна т.к. в сети крайне мало информации по работе с libusb.
А на русском всего пару статей.

Сейчас я пытаюсь написать простейшую программу, для работы с USB устройством, используя libusb. Ну и попутно, лучше разобраться в Qt.

Из предыдущей темы
Цитата(ISerg1986 @  13.1.2014,  21:25 Найти цитируемый пост)
Тут проблема в libusb.h или настройках компилятора?

Ни то, ни то.
Судя по ошибке "undefined reference" компилятор уже закончил работу, а ошибку выдал линковщик, который не видит библиотеки libusb. Для того, чтобы он увидел добавь в .pro файл следующее
Код
unix:LIBS += -L/usr/local/lib -llibusb
win32:LIBS += c:/path/to/libs/libusb.lib

Если тебе не нужна кроссплатформенность, и нужен только linux, то можешь добавить просто
Код
LIBS += -L/usr/local/lib -llibusb

Вы написали libusb.lib. Но в архиве http://www.libusb.org/ (libusb-1.0.9 (2012-04-20)) такой библиотеки нет. Есть файлы с расширениями in, sub, ac, c, h, rc, def. Файлов с расширением lib нет.
Может я не оттуда качал?
PM MAIL   Вверх
borisbn
Дата 14.1.2014, 11:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



ISerg1986, Для начала укажи ОС. К сожалению, кроссплатформенность не распространяется на библиотеки - только на исходники.

Цитата(ISerg1986 @  14.1.2014,  11:28 Найти цитируемый пост)
 Есть файлы с расширениями in, sub, ac, c, h, rc, def. Файлов с расширением lib нет.

Всё правильно. Ты скачал исходники. Теперь их нужно скомпилировать в библиотеку (linux way).
Если у тебя linux, то перейди в каталог, в который ты распаковал архив и набери
Код
configure
make
make install

Если Windows - то в подкаталоге msvc есть проекты для 6-й, 2005-й и 2010-й студии. Открывай их и компилируй.


Цитата(ISerg1986 @  14.1.2014,  11:28 Найти цитируемый пост)
А на русском всего пару статей.

А чем официальная документация не устраивает ? Зачем на русском ? Учи английский. Без этого в программировании делать просто нечего.


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
ISerg1986
Дата 14.1.2014, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.1.2014

Репутация: нет
Всего: нет



Цитата

А чем официальная документация не устраивает ? Зачем на русском ? Учи английский. Без этого в программировании делать просто нечего. 

Очень мало примеров для новичков. Хотелось бы увидеть пошаговую статью.
А английский я знаю, причём довольно не плохо. И технический тоже. 4 года спецкурсов.

Цитата

Если Windows - то в подкаталоге msvc есть проекты для 6-й, 2005-й и 2010-й студии. Открывай их и компилируй.

Сделал. Получил библиотеку. Подключил. Но посыпались ошибки (
user posted image


Это сообщение отредактировал(а) ISerg1986 - 14.1.2014, 12:34
PM MAIL   Вверх
borisbn
Дата 14.1.2014, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Кажется ясно.
Дело в том, что линковщик MinGW (а именно его запускает QtCreator) не понимает формата библиотек MSVC.
Тебе нужно собрать libusb при помощи MinGW. Как именно сейчас не подскажу (я не знаю, и сейчас нет времени).
Погугли "MinGW libusb" или "MinGW howto link library from linux configure make" или наподобие


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
kuzulis
Дата 14.1.2014, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 154
Регистрация: 5.9.2007

Репутация: нет
Всего: 1



Эмм.. 

Вообще то в Windows есть стандартный драйвер WinUSB который позволяет работать с USB девайсами (гугл в помощь). Но с ограничением: невозможно иметь доступ к изохронным конечным точкам (по крайней мере вроде бы в Windows 8.1 это можно - там добавили эту фичу). И не нужно ничего компилить и libusb вообще не нужен (т.е. не удивлюсь если libusb работает через winusb, но я не уверен, нужно глянуть сорцы)...

В Linux же достаточно установить пакет libusb из репозиториев.. и также не нужно ничего компилировать.

Еще 5 копеек: работать с USB через libusb - это не очень хорошая идея, потому что большие накладные расходы и пр. фейлы. Это годится только для чего нить простого..
Для серьезных вещей лучше всего сделать собственный драйвер и работать через него.   

Это сообщение отредактировал(а) kuzulis - 14.1.2014, 15:55
PM MAIL   Вверх
ISerg1986
Дата 14.1.2014, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.1.2014

Репутация: нет
Всего: нет



Конечно, не хорошо "скакать" с одной ОС на другую, но всё же...

Ради эксперимента перенёс проект на Linux Debian.
Добавил LIBS += -L/usr/local/lib -llibusb
Снова ошибка ( не может найти llibusb
Вы уверены в правильности написанного вами пути? Там, вроде, ничего нет. 
Но в установке/удалении программ этот пакет (пакеты) установлены. Или следует скачать и установить deb пакет вручную? (http://packages.debian.org/ru/sid/i386/libusb-1.0-0/download)
Путь пробовал менять на /usr/local/lib -llibusb (ну а вдруг), не помогло.

user posted image

Цитата(kuzulis @  14.1.2014,  15:52 Найти цитируемый пост)
Для серьезных вещей лучше всего сделать собственный драйвер и работать через него.   

Я новичек. Мне до драйвера-как до Луны. Хоть бы это заработало )

Цитата(kuzulis @  14.1.2014,  15:52 Найти цитируемый пост)
Вообще то в Windows есть стандартный драйвер WinUSB который позволяет работать с USB девайсами 

Хочется просто, быстро и на Линукс. В идеале. Но и на Виндовс тоже интересно. Вот и выбрал libusb.

Это сообщение отредактировал(а) ISerg1986 - 14.1.2014, 16:13
PM MAIL   Вверх
borisbn
Дата 14.1.2014, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(ISerg1986 @  14.1.2014,  16:08 Найти цитируемый пост)
Вы уверены в правильности написанного вами пути?

Абсолютно не уверен т.к.
1) Линукса вообще не знаю
2) Насколько, всё же, я знаю, в разных линуксах оно может лежать в разных местах и в проекте нужно писать не полный путь, а через переменную окружения (что-то типа $$LIBS или $$LIBPATH)
3) Опять же - предположение - у тебя установлен не SDK для libusb, а сама dll-ка (ну... so-шка в линуксе). Тебе же нужен пакет для разработчиков (SDK). Что-то типа libusb-dev


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
ISerg1986
Дата 14.1.2014, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.1.2014

Репутация: нет
Всего: нет



Цитата(borisbn @  14.1.2014,  16:15 Найти цитируемый пост)
Абсолютно не уверен т.к.

Жаль. Буду пробовать методом научного тыка.

Цитата(borisbn @  14.1.2014,  16:15 Найти цитируемый пост)
Опять же - предположение - у тебя установлен не SDK для libusb, а сама dll-ка (ну... so-шка в линуксе). Тебе же нужен пакет для разработчиков (SDK). Что-то типа libusb-dev 

Команда sudo apt-get install libusb-dev говорит, что "Уже установлена самая новая версия libusb-dev".
PM MAIL   Вверх
bsa
Дата 14.1.2014, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Для Linux ключ -L указывать не надо, если библиотека поставляется разработчиком дистрибутива (твой случай), находится в стандартном месте или указан полный путь к ней. Ключу же -l нужно передавать только часть названия библиотеки - без приставки lib и всех расширений. В твоем случае должно выглядеть так: LIBS += -lusb

Добавлено через 2 минуты и 40 секунд

 ! 
bsa
пожалуйста не встраивай такие большие картинки, выкладывай их на хостинг и давай ссылки, а то форматирование форума страдает

PM   Вверх
Amp
Дата 14.1.2014, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 886
Регистрация: 17.2.2009

Репутация: 7
Всего: 17



Цитата(ISerg1986 @  14.1.2014,  16:32 Найти цитируемый пост)
Буду пробовать методом научного тыка.

Предлагаю попробовать методом поиска по файловой системе. Хотя результат будет немного предсказуем.
PM MAIL   Вверх
ISerg1986
Дата 14.1.2014, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.1.2014

Репутация: нет
Всего: нет



Цитата(bsa @  14.1.2014,  16:42 Найти цитируемый пост)
В твоем случае должно выглядеть так: LIBS += -lusb

Исправил. Ошибка
http://s017.radikal.ru/i435/1401/a9/cd42bb054bc8.jpg
Дело в том, что линковщик GCC не понимает формата библиотек? Следует сменить линковщик?
http://i023.radikal.ru/1401/0a/afc11a3bd458.jpg

Цитата(bsa @  14.1.2014,  16:42 Найти цитируемый пост)
пожалуйста не встраивай такие большие картинки, выкладывай их на хостинг и давай ссылки, а то форматирование форума страдает

Ок. 
Я это делал для удобства. 

PM MAIL   Вверх
bsa
Дата 14.1.2014, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



ISerg1986, на приведенном тобой скриншоте всего лишь есть ошибка отсутствия функции libusb_init, а не неверного формата библиотеки. Неверный формат бывает тогда, когда ты пытаешься прилинковать 32-х битную библиотеку к 64-х битной программе.
PM   Вверх
ISerg1986
Дата 14.1.2014, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.1.2014

Репутация: нет
Всего: нет



Цитата(bsa @  14.1.2014,  17:54 Найти цитируемый пост)
 ошибка отсутствия функции libusb_init

Сейчас, при вводе в Qt " libusb_ " появляется выпадающий список, с множеством функций.
Там есть libusb_init 
Такое может быть, при отсутствии функции  libusb_init? И как это исправить?
PM MAIL   Вверх
tzirechnoy
Дата 14.1.2014, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 1
Всего: 16



1) Зачем Вам библиотеки в /usr/local? libusb ужэ много лет лежыт во всех дистрибутивах линукса.
Если Вы не девелопер библиотеки libusb или хотя бы не экспериментируете с экспериментальными возможностями библиотеки -- то берите дистрибутивный вариант.
2) Указания на самые базовые примеры идут с оригинальной документацыей. 

libusb developers guide, раздел IV называется "Examples".
PM MAIL   Вверх
ISerg1986
Дата 14.1.2014, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 12.1.2014

Репутация: нет
Всего: нет



Цитата(tzirechnoy @  14.1.2014,  19:08 Найти цитируемый пост)
Зачем Вам библиотеки в /usr/local

Мне так посоветовали прописать путь.
Сейчас изменил на LIBS += -lusb

Цитата(tzirechnoy @  14.1.2014,  19:08 Найти цитируемый пост)
Указания на самые базовые примеры идут с оригинальной документацией

Там совсем немного.
http://libusb.sourceforge.net/doc/examples-code.html

Я пытаюсь сделать следующее. 
http://clck.ru/92UeH
Считать данные с устройства, зная vid и pid.

Но на первой-же команде "libusb_init(NULL);", возникает ошибка.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0851 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.