![]() |
|
![]() ![]() ![]() |
|
ISerg1986 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Решил начать новую тему. Буду задавать свои вопросы тут, по мере их появления. Надеюсь, что тема будет многим полезна т.к. в сети крайне мало информации по работе с libusb.
А на русском всего пару статей. Сейчас я пытаюсь написать простейшую программу, для работы с USB устройством, используя libusb. Ну и попутно, лучше разобраться в Qt. Из предыдущей темы Ни то, ни то. Судя по ошибке "undefined reference" компилятор уже закончил работу, а ошибку выдал линковщик, который не видит библиотеки libusb. Для того, чтобы он увидел добавь в .pro файл следующее
Если тебе не нужна кроссплатформенность, и нужен только linux, то можешь добавить просто
Вы написали libusb.lib. Но в архиве http://www.libusb.org/ (libusb-1.0.9 (2012-04-20)) такой библиотеки нет. Есть файлы с расширениями in, sub, ac, c, h, rc, def. Файлов с расширением lib нет. Может я не оттуда качал? |
||||
|
|||||
borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
ISerg1986, Для начала укажи ОС. К сожалению, кроссплатформенность не распространяется на библиотеки - только на исходники.
Всё правильно. Ты скачал исходники. Теперь их нужно скомпилировать в библиотеку (linux way). Если у тебя linux, то перейди в каталог, в который ты распаковал архив и набери
Если Windows - то в подкаталоге msvc есть проекты для 6-й, 2005-й и 2010-й студии. Открывай их и компилируй. А чем официальная документация не устраивает ? Зачем на русском ? Учи английский. Без этого в программировании делать просто нечего. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
ISerg1986 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Очень мало примеров для новичков. Хотелось бы увидеть пошаговую статью. А английский я знаю, причём довольно не плохо. И технический тоже. 4 года спецкурсов.
Сделал. Получил библиотеку. Подключил. Но посыпались ошибки ( ![]() Это сообщение отредактировал(а) ISerg1986 - 14.1.2014, 12:34 |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Кажется ясно.
Дело в том, что линковщик MinGW (а именно его запускает QtCreator) не понимает формата библиотек MSVC. Тебе нужно собрать libusb при помощи MinGW. Как именно сейчас не подскажу (я не знаю, и сейчас нет времени). Погугли "MinGW libusb" или "MinGW howto link library from linux configure make" или наподобие -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
kuzulis |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
ISerg1986 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 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 (ну а вдруг), не помогло. ![]()
Я новичек. Мне до драйвера-как до Луны. Хоть бы это заработало )
Хочется просто, быстро и на Линукс. В идеале. Но и на Виндовс тоже интересно. Вот и выбрал libusb. Это сообщение отредактировал(а) ISerg1986 - 14.1.2014, 16:13 |
||||
|
|||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Абсолютно не уверен т.к. 1) Линукса вообще не знаю 2) Насколько, всё же, я знаю, в разных линуксах оно может лежать в разных местах и в проекте нужно писать не полный путь, а через переменную окружения (что-то типа $$LIBS или $$LIBPATH) 3) Опять же - предположение - у тебя установлен не SDK для libusb, а сама dll-ка (ну... so-шка в линуксе). Тебе же нужен пакет для разработчиков (SDK). Что-то типа libusb-dev -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
ISerg1986 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Жаль. Буду пробовать методом научного тыка. Команда sudo apt-get install libusb-dev говорит, что "Уже установлена самая новая версия libusb-dev". |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Для Linux ключ -L указывать не надо, если библиотека поставляется разработчиком дистрибутива (твой случай), находится в стандартном месте или указан полный путь к ней. Ключу же -l нужно передавать только часть названия библиотеки - без приставки lib и всех расширений. В твоем случае должно выглядеть так: LIBS += -lusb
Добавлено через 2 минуты и 40 секунд
|
|||
|
||||
Amp |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
||||
|
||||
ISerg1986 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Исправил. Ошибка http://s017.radikal.ru/i435/1401/a9/cd42bb054bc8.jpg Дело в том, что линковщик GCC не понимает формата библиотек? Следует сменить линковщик? http://i023.radikal.ru/1401/0a/afc11a3bd458.jpg
Ок. Я это делал для удобства. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
ISerg1986, на приведенном тобой скриншоте всего лишь есть ошибка отсутствия функции libusb_init, а не неверного формата библиотеки. Неверный формат бывает тогда, когда ты пытаешься прилинковать 32-х битную библиотеку к 64-х битной программе.
|
|||
|
||||
ISerg1986 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
||||
|
||||
tzirechnoy |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 1 Всего: 16 |
1) Зачем Вам библиотеки в /usr/local? libusb ужэ много лет лежыт во всех дистрибутивах линукса.
Если Вы не девелопер библиотеки libusb или хотя бы не экспериментируете с экспериментальными возможностями библиотеки -- то берите дистрибутивный вариант. 2) Указания на самые базовые примеры идут с оригинальной документацыей. libusb developers guide, раздел IV называется "Examples". |
|||
|
||||
ISerg1986 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 12.1.2014 Репутация: нет Всего: нет |
Мне так посоветовали прописать путь. Сейчас изменил на LIBS += -lusb
Там совсем немного. http://libusb.sourceforge.net/doc/examples-code.html Я пытаюсь сделать следующее. http://clck.ru/92UeH Считать данные с устройства, зная vid и pid. Но на первой-же команде "libusb_init(NULL);", возникает ошибка. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |