summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Batard <pbatard@gmail.com>2010-08-05 01:33:49 +0100
committerPete Batard <pbatard@gmail.com>2010-08-05 01:33:49 +0100
commit30b42bc6544e2c6a8e1809cb6819f670dc206904 (patch)
treec16471c7570a5116d8b8de1f39d63dfbc9e9662b
parentd91b872c4c87297d4df0f4e0220be04c223b2fdb (diff)
downloadlibusb-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-xautogen.sh10
-rw-r--r--configure.ac5
-rw-r--r--libusb/Makefile.am6
-rw-r--r--libusb/libusb-1.0.def432
4 files changed, 452 insertions, 1 deletions
diff --git a/autogen.sh b/autogen.sh
index 8c6dd32..5a26ef1 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -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