2012-05-28 3 views
2

Мы используем swig для добавления привязок python к библиотеке C++. Я создал файл .i и скомпилировал сгенерированный вывод swig в библиотеку.swig и вторичные общие библиотеки (C++)

Однако при попытке и использовать нашу библиотеку из в Python, возникает следующая ошибка:

ImportError: /home/satpal/src/alpha/USBDrDaq/examples/libUSBDrDAQ.so: undefined symbol: libusb_clear_halt 

Как вы можете видеть, что библиотека использует LibUSB. файл .i имеет include для libusb.h, этого, похоже, недостаточно.

Может ли Python понадобятся привязки для libUSB?

+1

Вы включаете 'libusb.h', но связываете ли вы с библиотекой (i.e pass' -lusb' в командной строке при построении)? –

+0

Я не вижу, см. Комментарий к ответу ниже. – Satpal

ответ

3

Вам необходимо связать libUSB с общей библиотекой, которую вы создаете. То есть, командная строка, которая строит вашу разделяемую библиотеку должно быть что-то вроде этого:

gcc -shared example.o example_wrap.o -o _example.so -lusb 

Обратите внимание на -lusb в конце.

+0

Спасибо за это. Реализатор это было так, просто запустив nm -u в общей библиотеке. Однако я не уверен, как добавить это в мои проекты autoconf/automake, makefile.am – Satpal

+2

@Satpal, предполагающий libtool 'lib_example_la_LIBADD = -lusb' в Makefile.am, сделает это. – Flexo

+0

Спасибо @awoodland – Satpal