diff options
author | Pete Batard <pbatard@gmail.com> | 2010-08-05 01:33:49 +0100 |
---|---|---|
committer | Pete Batard <pbatard@gmail.com> | 2010-08-05 01:33:49 +0100 |
commit | 30b42bc6544e2c6a8e1809cb6819f670dc206904 (patch) | |
tree | c16471c7570a5116d8b8de1f39d63dfbc9e9662b | |
parent | d91b872c4c87297d4df0f4e0220be04c223b2fdb (diff) | |
download | libusb-30b42bc6544e2c6a8e1809cb6819f670dc206904.tar.gz |
creates MinGW and MS DLLs that are fully interchangeablepbr293
1. because we use WINAPI, the def file MUST have the @n aliases - there's no way around as MinGW's .o use decoration always for __stdcall, and this can't be turned off
2. our "dumb" autogen create_def() script simply creates the whole range of aliases (we might improve on this in the future)
3. dlltool must be called manually to create the import lib from the def, *with the --kill-at option*
4. a CREATE_IMPORT_LIB autotools variable is introduced to selectively run dlltool or not
-rwxr-xr-x | autogen.sh | 10 | ||||
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | libusb/Makefile.am | 6 | ||||
-rw-r--r-- | libusb/libusb-1.0.def | 432 |
4 files changed, 452 insertions, 1 deletions
@@ -7,6 +7,16 @@ create_def() echo "LIBRARY" > libusb/libusb-1.0.def echo "EXPORTS" >> libusb/libusb-1.0.def sed -n -e "s/.*API_EXPORTED.*\([[:blank:]]\)\(.*\)(.*/ \2/p" libusb/*.c >> libusb/libusb-1.0.def + # We need to manually define a whole set of DLL aliases if we want the MS + # DLLs to be usable with dynamically linked MinGW executables. This is + # because it is not possible to avoid the @ decoration from import WINAPI + # calls in MinGW generated objects, and .def based MS generated DLLs don't + # have such a decoration => linking to MS DLL will fail without aliases. + # Currently, the maximum size is 32 and all sizes are multiples of 4 + for i in 4 8 12 16 20 24 28 32 + do + sed -n -e "s/.*API_EXPORTED.*\([[:blank:]]\)\(.*\)(.*/ \2@$i = \2/p" libusb/*.c >> libusb/libusb-1.0.def + done } # use glibtoolize if it is available (darwin) diff --git a/configure.ac b/configure.ac index 634a7d7..b4f90b3 100644 --- a/configure.ac +++ b/configure.ac @@ -55,11 +55,13 @@ case $host in AC_MSG_RESULT([Windows]) backend="windows" threads="windows" + create_import_lib="yes" LIBS="-lsetupapi -lole32 -ladvapi32" # -avoid-version to avoid a naming scheme such as libusb-0.dll AM_LDFLAGS="-no-undefined -avoid-version -Wl,--add-stdcall-alias" AM_CFLAGS="-std=c99" AC_CHECK_TOOL(RC, windres, no) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) ;; *-cygwin*) AC_DEFINE(OS_WINDOWS, [], [Windows backend]) @@ -70,7 +72,7 @@ case $host in threads="posix" LIBS="-lsetupapi -lole32 -ladvapi32" AM_CFLAGS="-std=c99" - AM_LDFLAGS="-no-undefined -avoid-version -Wl,--add-stdcall-alias" + AM_LDFLAGS="-no-undefined -avoid-version" AC_CHECK_TOOL(RC, windres, no) ;; *) @@ -81,6 +83,7 @@ AM_CONDITIONAL([OS_LINUX], [test "x$backend" = "xlinux"]) AM_CONDITIONAL([OS_DARWIN], [test "x$backend" = "xdarwin"]) AM_CONDITIONAL([OS_WINDOWS], [test "x$backend" = "xwindows"]) AM_CONDITIONAL([THREADS_POSIX], [test "x$threads" = "xposix"]) +AM_CONDITIONAL([CREATE_IMPORT_LIB], [test "x$create_import_lib" = "xyes"]) # Library versioning lt_major="0" diff --git a/libusb/Makefile.am b/libusb/Makefile.am index 879a3f7..60ab752 100644 --- a/libusb/Makefile.am +++ b/libusb/Makefile.am @@ -1,3 +1,9 @@ +all: libusb-1.0.la +if CREATE_IMPORT_LIB +# Rebuild the import lib from the .def so that MS and MinGW DLLs can be interchanged + $(DLLTOOL) $(DLLTOOLFLAGS) --kill-at --input-def libusb-1.0.def --dllname libusb-1.0.dll --output-lib .libs/libusb-1.0.dll.a +endif + lib_LTLIBRARIES = libusb-1.0.la LINUX_USBFS_SRC = os/linux_usbfs.c diff --git a/libusb/libusb-1.0.def b/libusb/libusb-1.0.def index aeb151a..47422d2 100644 --- a/libusb/libusb-1.0.def +++ b/libusb/libusb-1.0.def @@ -54,3 +54,435 @@ EXPORTS libusb_control_transfer libusb_bulk_transfer libusb_interrupt_transfer + libusb_get_device_list@4 = libusb_get_device_list + libusb_free_device_list@4 = libusb_free_device_list + libusb_get_bus_number@4 = libusb_get_bus_number + libusb_get_device_address@4 = libusb_get_device_address + libusb_get_max_packet_size@4 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@4 = libusb_get_max_iso_packet_size + libusb_ref_device@4 = libusb_ref_device + libusb_unref_device@4 = libusb_unref_device + libusb_open@4 = libusb_open + libusb_open_device_with_vid_pid@4 = libusb_open_device_with_vid_pid + libusb_close@4 = libusb_close + libusb_get_device@4 = libusb_get_device + libusb_get_configuration@4 = libusb_get_configuration + libusb_set_configuration@4 = libusb_set_configuration + libusb_claim_interface@4 = libusb_claim_interface + libusb_release_interface@4 = libusb_release_interface + libusb_set_interface_alt_setting@4 = libusb_set_interface_alt_setting + libusb_clear_halt@4 = libusb_clear_halt + libusb_reset_device@4 = libusb_reset_device + libusb_kernel_driver_active@4 = libusb_kernel_driver_active + libusb_detach_kernel_driver@4 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@4 = libusb_attach_kernel_driver + libusb_set_debug@4 = libusb_set_debug + libusb_init@4 = libusb_init + libusb_exit@4 = libusb_exit + libusb_strerror@4 = libusb_strerror + libusb_get_device_descriptor@4 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@4 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@4 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@4 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@4 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@4 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@4 = libusb_alloc_transfer + libusb_free_transfer@4 = libusb_free_transfer + libusb_submit_transfer@4 = libusb_submit_transfer + libusb_cancel_transfer@4 = libusb_cancel_transfer + libusb_try_lock_events@4 = libusb_try_lock_events + libusb_lock_events@4 = libusb_lock_events + libusb_unlock_events@4 = libusb_unlock_events + libusb_event_handling_ok@4 = libusb_event_handling_ok + libusb_event_handler_active@4 = libusb_event_handler_active + libusb_lock_event_waiters@4 = libusb_lock_event_waiters + libusb_unlock_event_waiters@4 = libusb_unlock_event_waiters + libusb_wait_for_event@4 = libusb_wait_for_event + libusb_handle_events_timeout@4 = libusb_handle_events_timeout + libusb_handle_events@4 = libusb_handle_events + libusb_handle_events_locked@4 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@4 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@4 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@4 = libusb_set_pollfd_notifiers + libusb_get_pollfds@4 = libusb_get_pollfds + libusb_control_transfer@4 = libusb_control_transfer + libusb_bulk_transfer@4 = libusb_bulk_transfer + libusb_interrupt_transfer@4 = libusb_interrupt_transfer + libusb_get_device_list@8 = libusb_get_device_list + libusb_free_device_list@8 = libusb_free_device_list + libusb_get_bus_number@8 = libusb_get_bus_number + libusb_get_device_address@8 = libusb_get_device_address + libusb_get_max_packet_size@8 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@8 = libusb_get_max_iso_packet_size + libusb_ref_device@8 = libusb_ref_device + libusb_unref_device@8 = libusb_unref_device + libusb_open@8 = libusb_open + libusb_open_device_with_vid_pid@8 = libusb_open_device_with_vid_pid + libusb_close@8 = libusb_close + libusb_get_device@8 = libusb_get_device + libusb_get_configuration@8 = libusb_get_configuration + libusb_set_configuration@8 = libusb_set_configuration + libusb_claim_interface@8 = libusb_claim_interface + libusb_release_interface@8 = libusb_release_interface + libusb_set_interface_alt_setting@8 = libusb_set_interface_alt_setting + libusb_clear_halt@8 = libusb_clear_halt + libusb_reset_device@8 = libusb_reset_device + libusb_kernel_driver_active@8 = libusb_kernel_driver_active + libusb_detach_kernel_driver@8 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@8 = libusb_attach_kernel_driver + libusb_set_debug@8 = libusb_set_debug + libusb_init@8 = libusb_init + libusb_exit@8 = libusb_exit + libusb_strerror@8 = libusb_strerror + libusb_get_device_descriptor@8 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@8 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@8 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@8 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@8 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@8 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@8 = libusb_alloc_transfer + libusb_free_transfer@8 = libusb_free_transfer + libusb_submit_transfer@8 = libusb_submit_transfer + libusb_cancel_transfer@8 = libusb_cancel_transfer + libusb_try_lock_events@8 = libusb_try_lock_events + libusb_lock_events@8 = libusb_lock_events + libusb_unlock_events@8 = libusb_unlock_events + libusb_event_handling_ok@8 = libusb_event_handling_ok + libusb_event_handler_active@8 = libusb_event_handler_active + libusb_lock_event_waiters@8 = libusb_lock_event_waiters + libusb_unlock_event_waiters@8 = libusb_unlock_event_waiters + libusb_wait_for_event@8 = libusb_wait_for_event + libusb_handle_events_timeout@8 = libusb_handle_events_timeout + libusb_handle_events@8 = libusb_handle_events + libusb_handle_events_locked@8 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@8 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@8 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@8 = libusb_set_pollfd_notifiers + libusb_get_pollfds@8 = libusb_get_pollfds + libusb_control_transfer@8 = libusb_control_transfer + libusb_bulk_transfer@8 = libusb_bulk_transfer + libusb_interrupt_transfer@8 = libusb_interrupt_transfer + libusb_get_device_list@12 = libusb_get_device_list + libusb_free_device_list@12 = libusb_free_device_list + libusb_get_bus_number@12 = libusb_get_bus_number + libusb_get_device_address@12 = libusb_get_device_address + libusb_get_max_packet_size@12 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@12 = libusb_get_max_iso_packet_size + libusb_ref_device@12 = libusb_ref_device + libusb_unref_device@12 = libusb_unref_device + libusb_open@12 = libusb_open + libusb_open_device_with_vid_pid@12 = libusb_open_device_with_vid_pid + libusb_close@12 = libusb_close + libusb_get_device@12 = libusb_get_device + libusb_get_configuration@12 = libusb_get_configuration + libusb_set_configuration@12 = libusb_set_configuration + libusb_claim_interface@12 = libusb_claim_interface + libusb_release_interface@12 = libusb_release_interface + libusb_set_interface_alt_setting@12 = libusb_set_interface_alt_setting + libusb_clear_halt@12 = libusb_clear_halt + libusb_reset_device@12 = libusb_reset_device + libusb_kernel_driver_active@12 = libusb_kernel_driver_active + libusb_detach_kernel_driver@12 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@12 = libusb_attach_kernel_driver + libusb_set_debug@12 = libusb_set_debug + libusb_init@12 = libusb_init + libusb_exit@12 = libusb_exit + libusb_strerror@12 = libusb_strerror + libusb_get_device_descriptor@12 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@12 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@12 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@12 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@12 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@12 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@12 = libusb_alloc_transfer + libusb_free_transfer@12 = libusb_free_transfer + libusb_submit_transfer@12 = libusb_submit_transfer + libusb_cancel_transfer@12 = libusb_cancel_transfer + libusb_try_lock_events@12 = libusb_try_lock_events + libusb_lock_events@12 = libusb_lock_events + libusb_unlock_events@12 = libusb_unlock_events + libusb_event_handling_ok@12 = libusb_event_handling_ok + libusb_event_handler_active@12 = libusb_event_handler_active + libusb_lock_event_waiters@12 = libusb_lock_event_waiters + libusb_unlock_event_waiters@12 = libusb_unlock_event_waiters + libusb_wait_for_event@12 = libusb_wait_for_event + libusb_handle_events_timeout@12 = libusb_handle_events_timeout + libusb_handle_events@12 = libusb_handle_events + libusb_handle_events_locked@12 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@12 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@12 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@12 = libusb_set_pollfd_notifiers + libusb_get_pollfds@12 = libusb_get_pollfds + libusb_control_transfer@12 = libusb_control_transfer + libusb_bulk_transfer@12 = libusb_bulk_transfer + libusb_interrupt_transfer@12 = libusb_interrupt_transfer + libusb_get_device_list@16 = libusb_get_device_list + libusb_free_device_list@16 = libusb_free_device_list + libusb_get_bus_number@16 = libusb_get_bus_number + libusb_get_device_address@16 = libusb_get_device_address + libusb_get_max_packet_size@16 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@16 = libusb_get_max_iso_packet_size + libusb_ref_device@16 = libusb_ref_device + libusb_unref_device@16 = libusb_unref_device + libusb_open@16 = libusb_open + libusb_open_device_with_vid_pid@16 = libusb_open_device_with_vid_pid + libusb_close@16 = libusb_close + libusb_get_device@16 = libusb_get_device + libusb_get_configuration@16 = libusb_get_configuration + libusb_set_configuration@16 = libusb_set_configuration + libusb_claim_interface@16 = libusb_claim_interface + libusb_release_interface@16 = libusb_release_interface + libusb_set_interface_alt_setting@16 = libusb_set_interface_alt_setting + libusb_clear_halt@16 = libusb_clear_halt + libusb_reset_device@16 = libusb_reset_device + libusb_kernel_driver_active@16 = libusb_kernel_driver_active + libusb_detach_kernel_driver@16 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@16 = libusb_attach_kernel_driver + libusb_set_debug@16 = libusb_set_debug + libusb_init@16 = libusb_init + libusb_exit@16 = libusb_exit + libusb_strerror@16 = libusb_strerror + libusb_get_device_descriptor@16 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@16 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@16 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@16 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@16 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@16 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@16 = libusb_alloc_transfer + libusb_free_transfer@16 = libusb_free_transfer + libusb_submit_transfer@16 = libusb_submit_transfer + libusb_cancel_transfer@16 = libusb_cancel_transfer + libusb_try_lock_events@16 = libusb_try_lock_events + libusb_lock_events@16 = libusb_lock_events + libusb_unlock_events@16 = libusb_unlock_events + libusb_event_handling_ok@16 = libusb_event_handling_ok + libusb_event_handler_active@16 = libusb_event_handler_active + libusb_lock_event_waiters@16 = libusb_lock_event_waiters + libusb_unlock_event_waiters@16 = libusb_unlock_event_waiters + libusb_wait_for_event@16 = libusb_wait_for_event + libusb_handle_events_timeout@16 = libusb_handle_events_timeout + libusb_handle_events@16 = libusb_handle_events + libusb_handle_events_locked@16 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@16 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@16 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@16 = libusb_set_pollfd_notifiers + libusb_get_pollfds@16 = libusb_get_pollfds + libusb_control_transfer@16 = libusb_control_transfer + libusb_bulk_transfer@16 = libusb_bulk_transfer + libusb_interrupt_transfer@16 = libusb_interrupt_transfer + libusb_get_device_list@20 = libusb_get_device_list + libusb_free_device_list@20 = libusb_free_device_list + libusb_get_bus_number@20 = libusb_get_bus_number + libusb_get_device_address@20 = libusb_get_device_address + libusb_get_max_packet_size@20 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@20 = libusb_get_max_iso_packet_size + libusb_ref_device@20 = libusb_ref_device + libusb_unref_device@20 = libusb_unref_device + libusb_open@20 = libusb_open + libusb_open_device_with_vid_pid@20 = libusb_open_device_with_vid_pid + libusb_close@20 = libusb_close + libusb_get_device@20 = libusb_get_device + libusb_get_configuration@20 = libusb_get_configuration + libusb_set_configuration@20 = libusb_set_configuration + libusb_claim_interface@20 = libusb_claim_interface + libusb_release_interface@20 = libusb_release_interface + libusb_set_interface_alt_setting@20 = libusb_set_interface_alt_setting + libusb_clear_halt@20 = libusb_clear_halt + libusb_reset_device@20 = libusb_reset_device + libusb_kernel_driver_active@20 = libusb_kernel_driver_active + libusb_detach_kernel_driver@20 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@20 = libusb_attach_kernel_driver + libusb_set_debug@20 = libusb_set_debug + libusb_init@20 = libusb_init + libusb_exit@20 = libusb_exit + libusb_strerror@20 = libusb_strerror + libusb_get_device_descriptor@20 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@20 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@20 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@20 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@20 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@20 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@20 = libusb_alloc_transfer + libusb_free_transfer@20 = libusb_free_transfer + libusb_submit_transfer@20 = libusb_submit_transfer + libusb_cancel_transfer@20 = libusb_cancel_transfer + libusb_try_lock_events@20 = libusb_try_lock_events + libusb_lock_events@20 = libusb_lock_events + libusb_unlock_events@20 = libusb_unlock_events + libusb_event_handling_ok@20 = libusb_event_handling_ok + libusb_event_handler_active@20 = libusb_event_handler_active + libusb_lock_event_waiters@20 = libusb_lock_event_waiters + libusb_unlock_event_waiters@20 = libusb_unlock_event_waiters + libusb_wait_for_event@20 = libusb_wait_for_event + libusb_handle_events_timeout@20 = libusb_handle_events_timeout + libusb_handle_events@20 = libusb_handle_events + libusb_handle_events_locked@20 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@20 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@20 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@20 = libusb_set_pollfd_notifiers + libusb_get_pollfds@20 = libusb_get_pollfds + libusb_control_transfer@20 = libusb_control_transfer + libusb_bulk_transfer@20 = libusb_bulk_transfer + libusb_interrupt_transfer@20 = libusb_interrupt_transfer + libusb_get_device_list@24 = libusb_get_device_list + libusb_free_device_list@24 = libusb_free_device_list + libusb_get_bus_number@24 = libusb_get_bus_number + libusb_get_device_address@24 = libusb_get_device_address + libusb_get_max_packet_size@24 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@24 = libusb_get_max_iso_packet_size + libusb_ref_device@24 = libusb_ref_device + libusb_unref_device@24 = libusb_unref_device + libusb_open@24 = libusb_open + libusb_open_device_with_vid_pid@24 = libusb_open_device_with_vid_pid + libusb_close@24 = libusb_close + libusb_get_device@24 = libusb_get_device + libusb_get_configuration@24 = libusb_get_configuration + libusb_set_configuration@24 = libusb_set_configuration + libusb_claim_interface@24 = libusb_claim_interface + libusb_release_interface@24 = libusb_release_interface + libusb_set_interface_alt_setting@24 = libusb_set_interface_alt_setting + libusb_clear_halt@24 = libusb_clear_halt + libusb_reset_device@24 = libusb_reset_device + libusb_kernel_driver_active@24 = libusb_kernel_driver_active + libusb_detach_kernel_driver@24 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@24 = libusb_attach_kernel_driver + libusb_set_debug@24 = libusb_set_debug + libusb_init@24 = libusb_init + libusb_exit@24 = libusb_exit + libusb_strerror@24 = libusb_strerror + libusb_get_device_descriptor@24 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@24 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@24 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@24 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@24 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@24 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@24 = libusb_alloc_transfer + libusb_free_transfer@24 = libusb_free_transfer + libusb_submit_transfer@24 = libusb_submit_transfer + libusb_cancel_transfer@24 = libusb_cancel_transfer + libusb_try_lock_events@24 = libusb_try_lock_events + libusb_lock_events@24 = libusb_lock_events + libusb_unlock_events@24 = libusb_unlock_events + libusb_event_handling_ok@24 = libusb_event_handling_ok + libusb_event_handler_active@24 = libusb_event_handler_active + libusb_lock_event_waiters@24 = libusb_lock_event_waiters + libusb_unlock_event_waiters@24 = libusb_unlock_event_waiters + libusb_wait_for_event@24 = libusb_wait_for_event + libusb_handle_events_timeout@24 = libusb_handle_events_timeout + libusb_handle_events@24 = libusb_handle_events + libusb_handle_events_locked@24 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@24 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@24 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@24 = libusb_set_pollfd_notifiers + libusb_get_pollfds@24 = libusb_get_pollfds + libusb_control_transfer@24 = libusb_control_transfer + libusb_bulk_transfer@24 = libusb_bulk_transfer + libusb_interrupt_transfer@24 = libusb_interrupt_transfer + libusb_get_device_list@28 = libusb_get_device_list + libusb_free_device_list@28 = libusb_free_device_list + libusb_get_bus_number@28 = libusb_get_bus_number + libusb_get_device_address@28 = libusb_get_device_address + libusb_get_max_packet_size@28 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@28 = libusb_get_max_iso_packet_size + libusb_ref_device@28 = libusb_ref_device + libusb_unref_device@28 = libusb_unref_device + libusb_open@28 = libusb_open + libusb_open_device_with_vid_pid@28 = libusb_open_device_with_vid_pid + libusb_close@28 = libusb_close + libusb_get_device@28 = libusb_get_device + libusb_get_configuration@28 = libusb_get_configuration + libusb_set_configuration@28 = libusb_set_configuration + libusb_claim_interface@28 = libusb_claim_interface + libusb_release_interface@28 = libusb_release_interface + libusb_set_interface_alt_setting@28 = libusb_set_interface_alt_setting + libusb_clear_halt@28 = libusb_clear_halt + libusb_reset_device@28 = libusb_reset_device + libusb_kernel_driver_active@28 = libusb_kernel_driver_active + libusb_detach_kernel_driver@28 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@28 = libusb_attach_kernel_driver + libusb_set_debug@28 = libusb_set_debug + libusb_init@28 = libusb_init + libusb_exit@28 = libusb_exit + libusb_strerror@28 = libusb_strerror + libusb_get_device_descriptor@28 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@28 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@28 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@28 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@28 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@28 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@28 = libusb_alloc_transfer + libusb_free_transfer@28 = libusb_free_transfer + libusb_submit_transfer@28 = libusb_submit_transfer + libusb_cancel_transfer@28 = libusb_cancel_transfer + libusb_try_lock_events@28 = libusb_try_lock_events + libusb_lock_events@28 = libusb_lock_events + libusb_unlock_events@28 = libusb_unlock_events + libusb_event_handling_ok@28 = libusb_event_handling_ok + libusb_event_handler_active@28 = libusb_event_handler_active + libusb_lock_event_waiters@28 = libusb_lock_event_waiters + libusb_unlock_event_waiters@28 = libusb_unlock_event_waiters + libusb_wait_for_event@28 = libusb_wait_for_event + libusb_handle_events_timeout@28 = libusb_handle_events_timeout + libusb_handle_events@28 = libusb_handle_events + libusb_handle_events_locked@28 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@28 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@28 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@28 = libusb_set_pollfd_notifiers + libusb_get_pollfds@28 = libusb_get_pollfds + libusb_control_transfer@28 = libusb_control_transfer + libusb_bulk_transfer@28 = libusb_bulk_transfer + libusb_interrupt_transfer@28 = libusb_interrupt_transfer + libusb_get_device_list@32 = libusb_get_device_list + libusb_free_device_list@32 = libusb_free_device_list + libusb_get_bus_number@32 = libusb_get_bus_number + libusb_get_device_address@32 = libusb_get_device_address + libusb_get_max_packet_size@32 = libusb_get_max_packet_size + libusb_get_max_iso_packet_size@32 = libusb_get_max_iso_packet_size + libusb_ref_device@32 = libusb_ref_device + libusb_unref_device@32 = libusb_unref_device + libusb_open@32 = libusb_open + libusb_open_device_with_vid_pid@32 = libusb_open_device_with_vid_pid + libusb_close@32 = libusb_close + libusb_get_device@32 = libusb_get_device + libusb_get_configuration@32 = libusb_get_configuration + libusb_set_configuration@32 = libusb_set_configuration + libusb_claim_interface@32 = libusb_claim_interface + libusb_release_interface@32 = libusb_release_interface + libusb_set_interface_alt_setting@32 = libusb_set_interface_alt_setting + libusb_clear_halt@32 = libusb_clear_halt + libusb_reset_device@32 = libusb_reset_device + libusb_kernel_driver_active@32 = libusb_kernel_driver_active + libusb_detach_kernel_driver@32 = libusb_detach_kernel_driver + libusb_attach_kernel_driver@32 = libusb_attach_kernel_driver + libusb_set_debug@32 = libusb_set_debug + libusb_init@32 = libusb_init + libusb_exit@32 = libusb_exit + libusb_strerror@32 = libusb_strerror + libusb_get_device_descriptor@32 = libusb_get_device_descriptor + libusb_get_active_config_descriptor@32 = libusb_get_active_config_descriptor + libusb_get_config_descriptor@32 = libusb_get_config_descriptor + libusb_get_config_descriptor_by_value@32 = libusb_get_config_descriptor_by_value + libusb_free_config_descriptor@32 = libusb_free_config_descriptor + libusb_get_string_descriptor_ascii@32 = libusb_get_string_descriptor_ascii + libusb_alloc_transfer@32 = libusb_alloc_transfer + libusb_free_transfer@32 = libusb_free_transfer + libusb_submit_transfer@32 = libusb_submit_transfer + libusb_cancel_transfer@32 = libusb_cancel_transfer + libusb_try_lock_events@32 = libusb_try_lock_events + libusb_lock_events@32 = libusb_lock_events + libusb_unlock_events@32 = libusb_unlock_events + libusb_event_handling_ok@32 = libusb_event_handling_ok + libusb_event_handler_active@32 = libusb_event_handler_active + libusb_lock_event_waiters@32 = libusb_lock_event_waiters + libusb_unlock_event_waiters@32 = libusb_unlock_event_waiters + libusb_wait_for_event@32 = libusb_wait_for_event + libusb_handle_events_timeout@32 = libusb_handle_events_timeout + libusb_handle_events@32 = libusb_handle_events + libusb_handle_events_locked@32 = libusb_handle_events_locked + libusb_pollfds_handle_timeouts@32 = libusb_pollfds_handle_timeouts + libusb_get_next_timeout@32 = libusb_get_next_timeout + libusb_set_pollfd_notifiers@32 = libusb_set_pollfd_notifiers + libusb_get_pollfds@32 = libusb_get_pollfds + libusb_control_transfer@32 = libusb_control_transfer + libusb_bulk_transfer@32 = libusb_bulk_transfer + libusb_interrupt_transfer@32 = libusb_interrupt_transfer |