Как связать простой пример проекта с libusb?

Я пытаюсь использовать LibUSB для взаимодействия с небольшим программируемым светодиодным устройством, которое я создал. У меня есть рабочий код в Windows, использующий порт libusb-win32, но у меня проблемы с переносом его на MAC.

Я клонировал LibUSB в локальный репозиторий git и скомпилировал его с помощью XCode. Я думаю, что это предпочтительный метод для MAC. После небольшого копания (включая отображение скрытой папки Library) похоже, что XCode выводит в /Users/jon/Library/Developer/Xcode/DerivedData/libusb-ekndohtauywugtgjlolqmmdyoafq/Build/Products/Debug/libusb-1.0.0.dylib.

Итак, мой вопрос: как я могу создать простое консольное приложение в XCode (или что-то еще, если есть более простой способ сделать это), которое ссылается на эту библиотеку и вызывает функцию из библиотеки libusb (например, libusb_init(libusb_context **ctx);)?


person Jon Cage    schedule 28.11.2014    source источник


Ответы (2)


Вместо того, чтобы создавать libusb с нуля с помощью Xcode, вам, вероятно, следует просто собрать его обычным способом (как, например, в Linux), или, что еще лучше, установить его предварительно собранным из Homebrew или MacPorts. Затем просто добавьте соответствующий заголовок и библиотеку в свой проект Xcode обычным способом.

См. также: Как настроить libusb в Mac OS X?< /а>.

person Paul R    schedule 28.11.2014
comment
Я, вероятно, должен упомянуть, что большая часть моего опыта разработки на сегодняшний день была связана с Windows. Как бы вы сделали это в Linux? Или, если я выберу доморощенный маршрут, это то, что легко развернуть? - person Jon Cage; 28.11.2014
comment
Я думаю, что маршрут Homebrew, вероятно, ваш лучший выбор - его очень просто установить, а затем, когда он у вас есть, вы можете легко установить любой из тысяч полезных пакетов. Ради интереса я набрал sudo brew install libusb и это было сделано за 4 секунды. Заголовок теперь установлен в /usr/local/include/libusb-1.0/libusb.h, а библиотеки в /usr/local/lib. - person Paul R; 28.11.2014
comment
Спасибо; это звучит как гораздо более простое решение. - person Jon Cage; 28.11.2014

Я был разочарован в течение нескольких дней, пытаясь использовать libusb в моем проекте Xcode. Все началось достаточно просто: 1. скачать libusb-1.0.20 с github; 2. запустить .configure, .make и .install - ошибок нет; 3. перетащите libusb.dylib из /usr/local/lib в мой проект, выбрав параметры копирования. Xcode автоматически добавляет libusb.dylib в связанные платформы и библиотеки; 4. перетащите libusb.h из каталога сборки в мой проект

Проект будет собираться и работать без ошибок, пока я не отправлю приложение в магазин приложений. Затем я узнал, что dlopen пытается загрузиться из /usr/local/lib/libusb.dylib. Кроме того, Xcode копирует файл dylib в мой целевой пакет только в том случае, если я явно добавлю его на этапе сборки файлов копирования.

Прочитав тонны документации о том, что должно быть легко, я не нашел простого способа заставить dlopen загружать библиотеку из моего комплекта приложений. Магазин приложений должен быть завершен. Они не могут, чтобы пользователи уже установили libusb в своей системе.

Спасибо, Боб Райс.

person Bob Rice    schedule 08.01.2016