2012-05-28 83 views
2

我們使用swig將python綁定添加到C++庫中。我創建了.i文件並將swig生成的輸出編譯到庫中。swig&secondary共享庫(C++)

但是試圖從內Python中使用我們的圖書館時,會出現以下錯誤:

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

正如你可以看到庫使用的libusb。 .i文件有一個libusb.h包含,這似乎不夠。

Python是否需要綁定libUSB呢?

+1

您包含'libusb.h',但是您是否與庫鏈接(即在構建時在命令行上傳遞'-lusb')? –

+0

我不知道,請參閱下面的評論回答。 – Satpal

回答

3

您需要將libUSB鏈接到您正在生成的共享庫中。也就是說,建立共享庫的命令行應該是這樣的:

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

注意-lusb末。

+0

感謝您的支持。 Realiser就是這種情況,剛剛在共享庫上運行nm -u。 但是我不確定如何將其添加到我的autoconf/automake項目中,makefile.am – Satpal

+2

@Satpal在Makefile.am中假定libtool lib_example_la_LIBADD = -lusb會執行此操作。 – Flexo

+0

感謝@awoodland – Satpal