0
共有ライブラリにサードパーティのコードをコンパイルしようとしているので、ctypesを使用してPythonから呼び出すことができます。これは故意に共有ライブラリで作業しています。私は共有ライブラリ構築しようと次に共有ライブラリをコンパイルするときのリンクエラー
gcc -c -fPIC -o elisa3-lib.o ../elisa3-lib.c
gcc -c -fPIC -o usb-comm.o ../usb-comm.c
:
gcc -shared -fPIC -Wl,-install_name,libelisa3.so -o libelisa3.so.1.0 elisa3-lib.o usb-comm.o -lc
をそしてusbcomm.c参照がlibusb.hので、私はリンカエラーを取得:
は、私が使用してオブジェクトコードをビルド
#ifdef __APPLE__
#include </opt/local/include/libusb-1.0/libusb.h>
#endif
エラーのある場合:
Undefined symbols for architecture x86_64:
"_libusb_bulk_transfer", referenced from:
_usb_send in usb-comm.o
_usb_receive in usb-comm.o
"_libusb_claim_interface", referenced from:
_openCommunication in usb-comm.o
"_libusb_close", referenced from:
_closeCommunication in usb-comm.o
"_libusb_exit", referenced from:
_closeCommunication in usb-comm.o
"_libusb_init", referenced from:
_openCommunication in usb-comm.o
"_libusb_open_device_with_vid_pid", referenced from:
_find_nrf_device in usb-comm.o
"_libusb_release_interface", referenced from:
_closeCommunication in usb-comm.o
ld: symbol(s) not found for architecture x86_64
正しくリンクするにはどうすればよいですか?共有ライブラリにlibusbをコンパイルし、-lとリンクする必要がありますか?
はい、これのように動作させることができました: gcc -shared -fPIC -Wl、-install_name、libelisa3.so -o libelisa3.so elisa3-lib.o usb-comm.o -L/opt /ローカル/ lib -lusb-1.0 – user1336958
恐ろしい!うれしいことがうまくいった –