Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Problem including libusb doesn't recognize the functions or variables of libusb
Forum Updated to NodeBB v4.3 + New Features

Problem including libusb doesn't recognize the functions or variables of libusb

Scheduled Pinned Locked Moved Solved General and Desktop
8 Posts 3 Posters 5.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A Offline
    A Offline
    aurquiel
    wrote on last edited by
    #1

    I am tried to compile a file with the header a his source file, both of them have the line to include the libusb library on GNU/Linux OS with this line

    #include <libusb-1.0/libusb.h>
    

    cyusb.c

    /*******************************************************************************\
     * Program Name		:	libcyusb.c					*
     * Author		:	V. Radhakrishnan ( rk@atr-labs.com )		*
     * License		:	GPL Ver 2.0					*
     * Copyright		:	Cypress Semiconductors Inc. / ATR-LABS		*
     * Date written		:	March 12, 2012					*
     * Modification Notes	:							*
     * 										*
     * This program is the main library for all cyusb applications to use.		*
     * This is a thin wrapper around libusb						*
    \*******************************************************************************/
    
    #include <stdio.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <string.h>
    #include <errno.h>
    #include <fcntl.h>
    
    #include <libusb-1.0/libusb.h>
    #include "cyusb.h"
    
    /* Maximum length of a string read from the Configuration file (/etc/cyusb.conf) for the library. */
    #define MAX_CFG_LINE_LENGTH                     (120)
    
    static struct cydev cydev[MAXDEVICES];
    static int nid;		/* Number of Interesting Devices	*/
    
    struct VPD {
        unsigned short	vid;
        unsigned short	pid;
        char		desc[MAX_STR_LEN];
    };
    
    static struct VPD vpd[MAX_ID_PAIRS];
    
    static int maxdevices;
    static int numdev;
    static libusb_device **list;
    static unsigned int checksum = 0;
    
    char pidfile[256];
    char logfile[256];
    int logfd;
    int pidfd;
    
    static int isempty(char *buf, int L)
    {
        int flag = 1;
        int i;
    
        if ( L == 0 ) return 1;
    
        for (i = 0; i < L; ++i ) {
            if ( (buf[i] == ' ') || ( buf[i] == '\t' ) )
             continue;
            else {
             flag = 0;
             break;
            }
        }
        return flag;
    }
    
    static void parse_configfile(void)
    {
        FILE *inp;
        char buf[MAX_CFG_LINE_LENGTH];
        char *cp1, *cp2, *cp3;
        int i;
    
        inp = fopen("/etc/cyusb.conf", "r");
            if (inp == NULL)
                return;
    
        memset(buf,'\0',MAX_CFG_LINE_LENGTH);
        while ( fgets(buf,MAX_CFG_LINE_LENGTH,inp) ) {
            if ( buf[0] == '#' ) 			/* Any line starting with a # is a comment 	*/
               continue;
            if ( buf[0] == '\n' )
               continue;
            if ( isempty(buf,strlen(buf)) )		/* Any blank line is also ignored		*/
               continue;
    
            cp1 = strtok(buf," =\t\n");
            if ( !strcmp(cp1,"LogFile") ) {
               cp2 = strtok(NULL," \t\n");
               strcpy(logfile,cp2);
            }
            else if ( !strcmp(cp1,"PIDFile") ) {
                cp2 = strtok(NULL," \t\n");
                strcpy(pidfile,cp2);
            }
            else if ( !strcmp(cp1,"<VPD>") ) {
                while ( fgets(buf,MAX_CFG_LINE_LENGTH,inp) ) {
                    if ( buf[0] == '#' ) 		/* Any line starting with a # is a comment 	*/
                       continue;
                    if ( buf[0] == '\n' )
                       continue;
                    if ( isempty(buf,strlen(buf)) )	/* Any blank line is also ignored		*/
                       continue;
                    if ( maxdevices == (MAX_ID_PAIRS - 1) )
                       continue;
                    cp1 = strtok(buf," \t\n");
                    if ( !strcmp(cp1,"</VPD>") )
                       break;
                    cp2 = strtok(NULL, " \t");
                    cp3 = strtok(NULL, " \t\n");
    
                    vpd[maxdevices].vid = strtol(cp1,NULL,16);
                    vpd[maxdevices].pid = strtol(cp2,NULL,16);
                    strncpy(vpd[maxdevices].desc,cp3,MAX_STR_LEN);
                                    vpd[maxdevices].desc[MAX_STR_LEN - 1] = '\0';   /* Make sure of NULL-termination. */
    
                    ++maxdevices;
                }
            }
            else {
                 printf("Error in config file /etc/cyusb.conf: %s \n",buf);
                 exit(1);
            }
        }
    
        fclose(inp);
    }
    
    static int device_is_of_interest(cyusb_device *d)
    {
        int i;
        int found = 0;
        struct libusb_device_descriptor desc;
        int vid;
        int pid;
    
        libusb_get_device_descriptor(d, &desc);
        vid = desc.idProduct;
        pid = desc.idProduct;
    
        for ( i = 0; i < maxdevices; ++i ) {
            if ( (vpd[i].vid == desc.idVendor) && (vpd[i].pid == desc.idProduct) ) {
                found = 1;
            break;
            }
        }
        return found;
    }
    
    unsigned short cyusb_getvendor(cyusb_handle *h)
    {
        struct libusb_device_descriptor d;
        cyusb_get_device_descriptor(h, &d);
        return d.idVendor;
    }
    
    unsigned short cyusb_getproduct(cyusb_handle *h)
    {
        struct libusb_device_descriptor d;
        cyusb_get_device_descriptor(h, &d);
        return d.idProduct;
    }
    
    static int renumerate(void)
    {
        cyusb_device *dev = NULL;
        cyusb_handle *handle = NULL;
        int found = 0;
        int i;
        int r;
    
        numdev = libusb_get_device_list(NULL, &list);
        if ( numdev < 0 ) {
           printf("Library: Error in enumerating devices...\n");
           return -4;
        }
    
        nid = 0;
    
        for ( i = 0; i < numdev; ++i ) {
            cyusb_device *tdev = list[i];
            if ( device_is_of_interest(tdev) ) {
               cydev[nid].dev = tdev;
               r = libusb_open(tdev, &cydev[nid].handle);
               if ( r ) {
                  printf("Error in opening device\n");
                  return -5;
               }
               else handle = cydev[nid].handle;
               cydev[nid].vid     = cyusb_getvendor(handle);
               cydev[nid].pid     = cyusb_getproduct(handle);
               cydev[nid].is_open = 1;
               cydev[nid].busnum  = cyusb_get_busnumber(handle);
               cydev[nid].devaddr = cyusb_get_devaddr(handle);
               ++nid;
            }
        }
        return nid;
    }
    
    int cyusb_open(unsigned short vid, unsigned short pid)
    {
        int r;
        cyusb_handle *h = NULL;
    
        r = libusb_init(NULL);
        if (r) {
              printf("Error in initializing libusb library...\n");
              return -1;
        }
        h = libusb_open_device_with_vid_pid(NULL, vid, pid);
        if ( !h ) {
           printf("Device not found\n");
           return -2;
        }
        cydev[0].dev     = libusb_get_device(h);
        cydev[0].handle  = h;
        cydev[nid].vid     = cyusb_getvendor(h);
        cydev[nid].pid     = cyusb_getproduct(h);
        cydev[nid].is_open = 1;
        cydev[nid].busnum  = cyusb_get_busnumber(h);
        cydev[nid].devaddr = cyusb_get_devaddr(h);
        nid = 1;
        return 1;
    }
    
    void cyusb_error(int err)
    {	if ( err == -1 )
           fprintf(stderr, "Input/output error\n");
        else if ( err == -2 )
            fprintf(stderr, "Invalid parameter\n");
        else if ( err == -3 )
            fprintf(stderr, "Access denied (insufficient permissions)\n");
        else if ( err == -4 )
            fprintf(stderr, "No such device. Disconnected...?\n");
        else if ( err == -5 )
            fprintf(stderr, "Entity not found\n");
        else if ( err == -6 )
            fprintf(stderr, "Resource busy\n");
        else if ( err == -7 )
            fprintf(stderr, "Operation timed out\n");
        else if ( err == -8 )
            fprintf(stderr, "Overflow\n");
        else if ( err == -9 )
            fprintf(stderr, "Pipe error\n");
        else if ( err == -10 )
            fprintf(stderr, "System call interrupted, ( due to signal ? )\n");
        else if ( err == -11 )
            fprintf(stderr, "Insufficient memory\n");
        else if ( err == 12 )
            fprintf(stderr, "Operation not supported/implemented\n");
        else fprintf(stderr, "Unknown internal error\n");
    }
    
    
    cyusb_handle * cyusb_gethandle(int index)
    {
        return cydev[index].handle;
    }
    
    void cyusb_close(void)
    {
        int i;
    
        for ( i = 0; i < nid; ++i ) {
            libusb_close(cydev[i].handle);
        }
        libusb_free_device_list(list, 1);
        libusb_exit(NULL);
    }
    
    int cyusb_get_busnumber(cyusb_handle *h)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return libusb_get_bus_number( tdev );
    }
    
    int cyusb_get_devaddr(cyusb_handle *h)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return libusb_get_device_address( tdev );
    }
    
    int cyusb_get_max_packet_size(cyusb_handle *h, unsigned char endpoint)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return ( libusb_get_max_packet_size(tdev, endpoint) );
    }
    
    int cyusb_get_max_iso_packet_size(cyusb_handle *h, unsigned char endpoint)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return ( libusb_get_max_iso_packet_size(tdev, endpoint) );
    }
    
    int cyusb_get_configuration(cyusb_handle *h, int *config)
    {
        return ( libusb_get_configuration(h, config) );
    }
    
    int cyusb_set_configuration(cyusb_handle *h, int config)
    {
        return ( libusb_set_configuration(h, config) );
    }
    
    int cyusb_claim_interface(cyusb_handle *h, int interface)
    {
        return ( libusb_claim_interface(h, interface) );
    }
    
    int cyusb_release_interface(cyusb_handle *h, int interface)
    {
        return ( libusb_release_interface(h, interface) );
    }
    
    int cyusb_set_interface_alt_setting(cyusb_handle *h, int interface, int altsetting)
    {
        return ( libusb_set_interface_alt_setting(h, interface, altsetting) );
    }
    
    int cyusb_clear_halt(cyusb_handle *h, unsigned char endpoint)
    {
        return ( libusb_clear_halt(h, endpoint) );
    }
    
    int cyusb_reset_device(cyusb_handle *h)
    {
        return ( libusb_reset_device(h) );
    }
    
    int cyusb_kernel_driver_active(cyusb_handle *h, int interface)
    {
        return ( libusb_kernel_driver_active(h, interface) );
    }
    
    int cyusb_detach_kernel_driver(cyusb_handle *h, int interface)
    {
        return ( libusb_detach_kernel_driver(h, interface) );
    }
    
    int cyusb_attach_kernel_driver(cyusb_handle *h, int interface)
    {
        return ( libusb_attach_kernel_driver(h, interface) );
    }
    
    int cyusb_get_device_descriptor(cyusb_handle *h, struct libusb_device_descriptor *desc)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return ( libusb_get_device_descriptor(tdev, desc ) );
    }
    
    int cyusb_get_active_config_descriptor(cyusb_handle *h, struct libusb_config_descriptor **config)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return ( libusb_get_active_config_descriptor(tdev, config) );
    }
    
    int cyusb_get_config_descriptor(cyusb_handle *h, unsigned char config_index, struct libusb_config_descriptor **config)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return ( libusb_get_config_descriptor(tdev, config_index, config) );
    }
    
    int cyusb_get_config_descriptor_by_value(cyusb_handle *h, unsigned char bConfigurationValue,
                                        struct usb_config_descriptor **config)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return ( libusb_get_config_descriptor_by_value(tdev, bConfigurationValue,
                        (struct libusb_config_descriptor **)config) );
    }
    
    void cyusb_free_config_descriptor(struct libusb_config_descriptor *config)
    {
        libusb_free_config_descriptor( (libusb_config_descriptor *)config );
    }
    
    int cyusb_get_string_descriptor_ascii(cyusb_handle *h, unsigned char index, unsigned char *data,  int length)
    {
        cyusb_device *tdev = libusb_get_device(h);
        return ( libusb_get_string_descriptor_ascii(h, index, data, length) );
    }
    
    int cyusb_get_descriptor(cyusb_handle *h, unsigned char desc_type, unsigned char desc_index, unsigned char *data,
            int len)
    {
        return ( libusb_get_descriptor(h, desc_type, desc_index, data, len) );
    }
    
    int cyusb_get_string_descriptor(cyusb_handle *h, unsigned char desc_index, unsigned short langid,
                                    unsigned char *data, int len)
    {
        return ( libusb_get_string_descriptor(h, desc_index, langid, data, len) );
    }
    
    int cyusb_control_transfer(cyusb_handle *h, unsigned char bmRequestType, unsigned char bRequest,
            unsigned short wValue, unsigned short wIndex, unsigned char *data, unsigned short wLength,
            unsigned int timeout)
    {
        return ( libusb_control_transfer(h, bmRequestType, bRequest, wValue, wIndex, data, wLength, timeout) );
    }
    
    int cyusb_control_read (cyusb_handle *h, unsigned char bmRequestType, unsigned char bRequest,
            unsigned short wValue, unsigned short wIndex, unsigned char *data, unsigned short wLength,
            unsigned int timeout)
    {
        /* Set the direction bit to indicate a read transfer. */
        return ( libusb_control_transfer(h, bmRequestType | 0x80, bRequest, wValue, wIndex, data, wLength, timeout) );
    }
    
    int cyusb_control_write (cyusb_handle *h, unsigned char bmRequestType, unsigned char bRequest,
            unsigned short wValue, unsigned short wIndex, unsigned char *data, unsigned short wLength,
            unsigned int timeout)
    {
        /* Clear the direction bit to indicate a write transfer. */
        return ( libusb_control_transfer(h, bmRequestType & 0x7F, bRequest, wValue, wIndex, data, wLength, timeout) );
    }
    
    int cyusb_bulk_transfer(cyusb_handle *h, unsigned char endpoint, unsigned char *data, int length,
                    int *transferred, int timeout)
    {
        return ( libusb_bulk_transfer(h, endpoint, data, length, transferred, timeout) );
    }
    
    int cyusb_interrupt_transfer(cyusb_handle *h, unsigned char endpoint, unsigned char *data, int length,
                    int *transferred, unsigned int timeout)
    {
        return ( libusb_interrupt_transfer(h, endpoint, data, length, transferred, timeout) );
    }
    
    
    static void control_transfer(cyusb_handle *h, unsigned int address, unsigned char *dbuf, int len)
    {
        int j;
        int r;
        int b;
        unsigned int *pint;
        int index;
    
        int balance = len;
        pint = (unsigned int *)dbuf;
    
        index = 0;
        while ( balance > 0 ) {
              if ( balance > 4096 )
             b = 4096;
              else b = balance;
              r = cyusb_control_transfer(h, 0x40, 0xA0, ( address & 0x0000ffff ), address >> 16, &dbuf[index], b, 1000);
              if ( r != b ) {
               printf("Error in control_transfer\n");
              }
              address += b ;
              balance -= b;
              index += b;
        }
        for ( j = 0; j < len/4; ++j )
            checksum += pint[j];
    }
    

    I am getting this error

    /home/pasante/Escritorio/simple-player/src/cyusb.c:372: error: ‘libusb_config_descriptor’ undeclared (first use in this function)
    libusb_free_config_descriptor( (libusb_config_descriptor *)config );
    ^~~~~~~~~~~~~~~~~~~~~~~~
    libusb_config_descriptor is not declared

    if i eliminate the function where that variable appears, any variable or function of libusb are recognized

    1 Reply Last reply
    0
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by mrjj
      #2

      Hi
      Can you show your .pro file ?

      Its unclear how you LINK to the actual lib.

      http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html

      A 1 Reply Last reply
      0
      • dheerendraD Offline
        dheerendraD Offline
        dheerendra
        Qt Champions 2022
        wrote on last edited by
        #3

        Looks like this question is nothing to do with Qt. But still where is the structure libusb_config_descriptor defined ? This structure may not be available in your library. Please check it.

        Dheerendra
        @Community Service
        Certified Qt Specialist
        http://www.pthinks.com

        1 Reply Last reply
        3
        • mrjjM mrjj

          Hi
          Can you show your .pro file ?

          Its unclear how you LINK to the actual lib.

          http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html

          A Offline
          A Offline
          aurquiel
          wrote on last edited by aurquiel
          #4

          @mrjj said in Problem including libusb doesn't recognize the functions or variables of libusb:

          Hi
          Can you show your .pro file ?

          Its unclear how you LINK to the actual lib.

          http://doc.qt.io/qtcreator/creator-project-qmake-libraries.html

          .pro

          #
          # VLC-Qt Simple Player
          # Copyright (C) 2015 Tadej Novak <tadej@tano.si>
          #
          
          TARGET      = simple-player
          TEMPLATE    = app
          CONFIG 	   += c++11
          
          QT         += widgets
          
          SOURCES    += main.cpp \
              SimplePlayer.cpp \
              EqualizerDialog.cpp \
              connection.cpp \
              cyusb.c
          
          HEADERS    += SimplePlayer.h \
              EqualizerDialog.h \
              connection.h \
              cyusb.h
          
          FORMS      += SimplePlayer.ui \
              EqualizerDialog.ui
          
          LIBS       += -lVLCQtCore -lVLCQtWidgets 
          
          
          # Edit below for custom library location
          LIBS       += -L/Users/tadej/workspace/tanoprojects/install/vlc-qt/lib -lVLCQtCore -lVLCQtWidgets 
          INCLUDEPATH += /Users/tadej/workspace/tanoprojects/install/vlc-qt/include 
          
          RESOURCES += \
              icons.qrc
          

          I am doing some search about added the path to the .pro file, here it's where libusb are located in my computer, but i am not sure how to added to the .pro i was only able to find the header here /usr/include/libusb-1.0/libusb.h and not the lib

          pasante@pasante-MN-50:~$ locate libusb
          /lib/firmware/carl9170fw/extra/libusb-zeropacket.diff
          /lib/x86_64-linux-gnu/libusb-1.0.so.0
          /lib/x86_64-linux-gnu/libusb-1.0.so.0.1.0
          /opt/Qt5.8.0/5.8/Src/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/libusb.sh
          /opt/Qt5.8.0/5.8/Src/coin/provisioning/qtci-linux-Ubuntu-14.04-x86_64/libusb.sh
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/build/linux/unbundle/libusb.gyp
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/BUILD.gn
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/OWNERS
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/README.chromium
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/assign-endpoints-checks.patch
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/composite-hid-close.patch
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/darwin-sigfpe.patch
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/libusb.gyp
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/linux-udev.patch
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/open-fd.patch
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/upstream-tick147.patch
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/windows-build.patch
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/AUTHORS
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/COPYING
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/config.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/core.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/descriptor.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/hotplug.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/hotplug.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/interrupt.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/interrupt.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/io.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/libusb.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/libusbi.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/strerror.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/sync.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/version.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/version_nano.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/DEPS
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/darwin_usb.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/darwin_usb.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_netlink.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_udev.cc
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_usbfs.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_usbfs.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/openbsd_usb.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_posix.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_posix.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_windows.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_windows.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_posix.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_posix.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_windows.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_windows.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/wince_usb.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/wince_usb.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/windows_common.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/windows_usb.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/windows_usb.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/config.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/errno.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/inttypes.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/missing.c
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/missing.h
          /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/stdint.h
          /opt/Qt5.8.0/Docs/Qt-5.8/qtwebengine/qtwebengine-3rdparty-libusbx.html
          /usr/include/libusb-1.0
          /usr/include/libusb-1.0/libusb.h
          /usr/lib/x86_64-linux-gnu/libusb-1.0.a
          /usr/lib/x86_64-linux-gnu/libusb-1.0.so
          /usr/lib/x86_64-linux-gnu/libusbmuxd.so.4
          /usr/lib/x86_64-linux-gnu/libusbmuxd.so.4.0.0
          /usr/lib/x86_64-linux-gnu/pkgconfig/libusb-1.0.pc
          /usr/share/doc/libusb-1.0-0
          /usr/share/doc/libusb-1.0-0-dbg
          /usr/share/doc/libusb-1.0-0-dev
          /usr/share/doc/libusb-1.0-doc
          /usr/share/doc/libusbmuxd4
          /usr/share/doc/libusb-1.0-0/README
          /usr/share/doc/libusb-1.0-0/changelog.Debian.gz
          /usr/share/doc/libusb-1.0-0/copyright
          /usr/share/doc/libusb-1.0-0-dbg/changelog.Debian.gz
          /usr/share/doc/libusb-1.0-0-dbg/copyright
          /usr/share/doc/libusb-1.0-0-dev/README
          /usr/share/doc/libusb-1.0-0-dev/changelog.Debian.gz
          /usr/share/doc/libusb-1.0-0-dev/copyright
          /usr/share/doc/libusb-1.0-doc/PORTING
          /usr/share/doc/libusb-1.0-doc/README
          /usr/share/doc/libusb-1.0-doc/changelog.Debian.gz
          /usr/share/doc/libusb-1.0-doc/copyright
          /usr/share/doc/libusb-1.0-doc/html
          /usr/share/doc/libusb-1.0-doc/html/annotated.html
          /usr/share/doc/libusb-1.0-doc/html/api.html
          /usr/share/doc/libusb-1.0-doc/html/arrowdown.png
          /usr/share/doc/libusb-1.0-doc/html/arrowright.png
          /usr/share/doc/libusb-1.0-doc/html/bc_s.png
          /usr/share/doc/libusb-1.0-doc/html/bdwn.png
          /usr/share/doc/libusb-1.0-doc/html/caveats.html
          /usr/share/doc/libusb-1.0-doc/html/classes.html
          /usr/share/doc/libusb-1.0-doc/html/closed.png
          /usr/share/doc/libusb-1.0-doc/html/contexts.html
          /usr/share/doc/libusb-1.0-doc/html/dir_6560186179ae86ab3fbed805e7cb86e4.html
          /usr/share/doc/libusb-1.0-doc/html/doc.png
          /usr/share/doc/libusb-1.0-doc/html/doxygen.css
          /usr/share/doc/libusb-1.0-doc/html/doxygen.png
          /usr/share/doc/libusb-1.0-doc/html/files.html
          /usr/share/doc/libusb-1.0-doc/html/folderclosed.png
          /usr/share/doc/libusb-1.0-doc/html/folderopen.png
          /usr/share/doc/libusb-1.0-doc/html/functions.html
          /usr/share/doc/libusb-1.0-doc/html/functions_vars.html
          /usr/share/doc/libusb-1.0-doc/html/group__asyncio.html
          /usr/share/doc/libusb-1.0-doc/html/group__desc.html
          /usr/share/doc/libusb-1.0-doc/html/group__dev.html
          /usr/share/doc/libusb-1.0-doc/html/group__hotplug.html
          /usr/share/doc/libusb-1.0-doc/html/group__lib.html
          /usr/share/doc/libusb-1.0-doc/html/group__misc.html
          /usr/share/doc/libusb-1.0-doc/html/group__poll.html
          /usr/share/doc/libusb-1.0-doc/html/group__syncio.html
          /usr/share/doc/libusb-1.0-doc/html/hotplug.html
          /usr/share/doc/libusb-1.0-doc/html/index.html
          /usr/share/doc/libusb-1.0-doc/html/io.html
          /usr/share/doc/libusb-1.0-doc/html/jquery.js
          /usr/share/doc/libusb-1.0-doc/html/libusb_8h_source.html
          /usr/share/doc/libusb-1.0-doc/html/modules.html
          /usr/share/doc/libusb-1.0-doc/html/mtasync.html
          /usr/share/doc/libusb-1.0-doc/html/nav_f.png
          /usr/share/doc/libusb-1.0-doc/html/nav_g.png
          /usr/share/doc/libusb-1.0-doc/html/nav_h.png
          /usr/share/doc/libusb-1.0-doc/html/open.png
          /usr/share/doc/libusb-1.0-doc/html/packetoverflow.html
          /usr/share/doc/libusb-1.0-doc/html/pages.html
          /usr/share/doc/libusb-1.0-doc/html/splitbar.png
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__bos__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__bos__dev__capability__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__config__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__container__id__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__control__setup.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__device__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__endpoint__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__interface.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__interface__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__iso__packet__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__pollfd.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__ss__endpoint__companion__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__ss__usb__device__capability__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__transfer.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__usb__2__0__extension__descriptor.html
          /usr/share/doc/libusb-1.0-doc/html/structlibusb__version.html
          /usr/share/doc/libusb-1.0-doc/html/sync_off.png
          /usr/share/doc/libusb-1.0-doc/html/sync_on.png
          /usr/share/doc/libusb-1.0-doc/html/tab_a.png
          /usr/share/doc/libusb-1.0-doc/html/tab_b.png
          /usr/share/doc/libusb-1.0-doc/html/tab_h.png
          /usr/share/doc/libusb-1.0-doc/html/tab_s.png
          /usr/share/doc/libusb-1.0-doc/html/tabs.css
          /usr/share/doc/libusb-1.0-doc/html/version_8h_source.html
          /usr/share/doc/libusb-1.0-doc/html/version__nano_8h_source.html
          /usr/share/doc/libusbmuxd4/changelog.Debian.gz
          /usr/share/doc/libusbmuxd4/copyright
          /usr/share/doc-base/libusb-1.0-doc
          /usr/share/lintian/overrides/libusbmuxd4
          /var/cache/apt/archives/libusb-1.0-0-dbg_2%3a1.0.20-1_amd64.deb
          /var/cache/apt/archives/libusb-1.0-0-dev_2%3a1.0.20-1_amd64.deb
          /var/cache/apt/archives/libusb-1.0-doc_2%3a1.0.20-1_all.deb
          /var/lib/dpkg/info/libusb-1.0-0-dbg:amd64.list
          /var/lib/dpkg/info/libusb-1.0-0-dbg:amd64.md5sums
          /var/lib/dpkg/info/libusb-1.0-0-dev:amd64.list
          /var/lib/dpkg/info/libusb-1.0-0-dev:amd64.md5sums
          /var/lib/dpkg/info/libusb-1.0-0:amd64.list
          /var/lib/dpkg/info/libusb-1.0-0:amd64.md5sums
          /var/lib/dpkg/info/libusb-1.0-0:amd64.shlibs
          /var/lib/dpkg/info/libusb-1.0-0:amd64.symbols
          /var/lib/dpkg/info/libusb-1.0-0:amd64.triggers
          /var/lib/dpkg/info/libusb-1.0-doc.list
          /var/lib/dpkg/info/libusb-1.0-doc.md5sums
          /var/lib/dpkg/info/libusbmuxd4:amd64.list
          /var/lib/dpkg/info/libusbmuxd4:amd64.md5sums
          /var/lib/dpkg/info/libusbmuxd4:amd64.shlibs
          /var/lib/dpkg/info/libusbmuxd4:amd64.symbols
          /var/lib/dpkg/info/libusbmuxd4:amd64.triggers
          
          

          Can help my to fill this

          LIBS += -L[LOCATION_OF_THE_libusb_LIBRARY_ON_THE_SYSTEM]
          INCLUDEPATH += [LOCATION_OF_libusb_HEADER_FILE]
          DEPENDPATH += [LOCATION_OF_libusb_HEADER_FILE]
          PRE_TARGETDEPS += [LOCATION_OF_libusb.a_ARCHIVE_FILE_OF_THE_LIBRARY]

          I couldn't find the lib any clue?

          this is what i have

          LIBS += -L
          INCLUDEPATH += /usr/include/libusb-1.0/
          DEPENDPATH += /usr/include/libusb-1.0/libusb.h
          PRE_TARGETDEPS += /usr/lib/x86_64-linux-gnu/

          1 Reply Last reply
          0
          • dheerendraD Offline
            dheerendraD Offline
            dheerendra
            Qt Champions 2022
            wrote on last edited by
            #5

            /lib/x86_64-linux-gnu/libusb-1.0.so.0 is present under the directory /lib/x86_64-linux-gnu/

            LIBS += -L/lib/x86_64-linux-gnu -llibusb
            INCLUDE PATH +=/usr/include/libusb-1.0/

            Dheerendra
            @Community Service
            Certified Qt Specialist
            http://www.pthinks.com

            1 Reply Last reply
            3
            • mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #6

              Did you do
              sudo apt-get install libusb-1.0-0-dev

              or was it already installed ?
              mine is in
              /lib/i386-linux-gnu/libusb-1.0.so.0
              (Mint 64)

              1 Reply Last reply
              0
              • A Offline
                A Offline
                aurquiel
                wrote on last edited by aurquiel
                #7

                I am making easy this way a simple program to display the information from USB.

                I made the .pro getting information from the command in console locate libusb

                pasante@pasante-MN-50:~$ locate libusb
                /lib/firmware/carl9170fw/extra/libusb-zeropacket.diff
                /lib/x86_64-linux-gnu/libusb-1.0.so.0
                /lib/x86_64-linux-gnu/libusb-1.0.so.0.1.0
                /opt/Qt5.8.0/5.8/Src/coin/provisioning/qtci-linux-RHEL-6.6-x86_64/libusb.sh
                /opt/Qt5.8.0/5.8/Src/coin/provisioning/qtci-linux-Ubuntu-14.04-x86_64/libusb.sh
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/build/linux/unbundle/libusb.gyp
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/BUILD.gn
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/OWNERS
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/README.chromium
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/assign-endpoints-checks.patch
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/composite-hid-close.patch
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/darwin-sigfpe.patch
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/libusb.gyp
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/linux-udev.patch
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/open-fd.patch
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/upstream-tick147.patch
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/windows-build.patch
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/AUTHORS
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/COPYING
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/config.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/core.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/descriptor.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/hotplug.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/hotplug.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/interrupt.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/interrupt.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/io.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/libusb.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/libusbi.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/strerror.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/sync.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/version.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/version_nano.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/DEPS
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/darwin_usb.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/darwin_usb.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_netlink.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_udev.cc
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_usbfs.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/linux_usbfs.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/openbsd_usb.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_posix.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_posix.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_windows.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/poll_windows.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_posix.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_posix.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_windows.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/threads_windows.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/wince_usb.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/wince_usb.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/windows_common.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/windows_usb.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/libusb/os/windows_usb.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/config.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/errno.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/inttypes.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/missing.c
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/missing.h
                /opt/Qt5.8.0/5.8/Src/qtwebengine/src/3rdparty/chromium/third_party/libusb/src/msvc/stdint.h
                /opt/Qt5.8.0/Docs/Qt-5.8/qtwebengine/qtwebengine-3rdparty-libusbx.html
                /usr/include/libusb-1.0
                /usr/include/libusb-1.0/libusb.h
                /usr/lib/x86_64-linux-gnu/libusb-1.0.a
                /usr/lib/x86_64-linux-gnu/libusb-1.0.so
                /usr/lib/x86_64-linux-gnu/libusbmuxd.so.4
                /usr/lib/x86_64-linux-gnu/libusbmuxd.so.4.0.0
                /usr/lib/x86_64-linux-gnu/pkgconfig/libusb-1.0.pc
                /usr/share/doc/libusb-1.0-0
                /usr/share/doc/libusb-1.0-0-dbg
                /usr/share/doc/libusb-1.0-0-dev
                /usr/share/doc/libusb-1.0-doc
                /usr/share/doc/libusbmuxd4
                /usr/share/doc/libusb-1.0-0/README
                /usr/share/doc/libusb-1.0-0/changelog.Debian.gz
                /usr/share/doc/libusb-1.0-0/copyright
                /usr/share/doc/libusb-1.0-0-dbg/changelog.Debian.gz
                /usr/share/doc/libusb-1.0-0-dbg/copyright
                /usr/share/doc/libusb-1.0-0-dev/README
                /usr/share/doc/libusb-1.0-0-dev/changelog.Debian.gz
                /usr/share/doc/libusb-1.0-0-dev/copyright
                /usr/share/doc/libusb-1.0-doc/PORTING
                /usr/share/doc/libusb-1.0-doc/README
                /usr/share/doc/libusb-1.0-doc/changelog.Debian.gz
                /usr/share/doc/libusb-1.0-doc/copyright
                /usr/share/doc/libusb-1.0-doc/html
                /usr/share/doc/libusb-1.0-doc/html/annotated.html
                /usr/share/doc/libusb-1.0-doc/html/api.html
                /usr/share/doc/libusb-1.0-doc/html/arrowdown.png
                /usr/share/doc/libusb-1.0-doc/html/arrowright.png
                /usr/share/doc/libusb-1.0-doc/html/bc_s.png
                /usr/share/doc/libusb-1.0-doc/html/bdwn.png
                /usr/share/doc/libusb-1.0-doc/html/caveats.html
                /usr/share/doc/libusb-1.0-doc/html/classes.html
                /usr/share/doc/libusb-1.0-doc/html/closed.png
                /usr/share/doc/libusb-1.0-doc/html/contexts.html
                /usr/share/doc/libusb-1.0-doc/html/dir_6560186179ae86ab3fbed805e7cb86e4.html
                /usr/share/doc/libusb-1.0-doc/html/doc.png
                /usr/share/doc/libusb-1.0-doc/html/doxygen.css
                /usr/share/doc/libusb-1.0-doc/html/doxygen.png
                /usr/share/doc/libusb-1.0-doc/html/files.html
                /usr/share/doc/libusb-1.0-doc/html/folderclosed.png
                /usr/share/doc/libusb-1.0-doc/html/folderopen.png
                /usr/share/doc/libusb-1.0-doc/html/functions.html
                /usr/share/doc/libusb-1.0-doc/html/functions_vars.html
                /usr/share/doc/libusb-1.0-doc/html/group__asyncio.html
                /usr/share/doc/libusb-1.0-doc/html/group__desc.html
                /usr/share/doc/libusb-1.0-doc/html/group__dev.html
                /usr/share/doc/libusb-1.0-doc/html/group__hotplug.html
                /usr/share/doc/libusb-1.0-doc/html/group__lib.html
                /usr/share/doc/libusb-1.0-doc/html/group__misc.html
                /usr/share/doc/libusb-1.0-doc/html/group__poll.html
                /usr/share/doc/libusb-1.0-doc/html/group__syncio.html
                /usr/share/doc/libusb-1.0-doc/html/hotplug.html
                /usr/share/doc/libusb-1.0-doc/html/index.html
                /usr/share/doc/libusb-1.0-doc/html/io.html
                /usr/share/doc/libusb-1.0-doc/html/jquery.js
                /usr/share/doc/libusb-1.0-doc/html/libusb_8h_source.html
                /usr/share/doc/libusb-1.0-doc/html/modules.html
                /usr/share/doc/libusb-1.0-doc/html/mtasync.html
                /usr/share/doc/libusb-1.0-doc/html/nav_f.png
                /usr/share/doc/libusb-1.0-doc/html/nav_g.png
                /usr/share/doc/libusb-1.0-doc/html/nav_h.png
                /usr/share/doc/libusb-1.0-doc/html/open.png
                /usr/share/doc/libusb-1.0-doc/html/packetoverflow.html
                /usr/share/doc/libusb-1.0-doc/html/pages.html
                /usr/share/doc/libusb-1.0-doc/html/splitbar.png
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__bos__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__bos__dev__capability__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__config__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__container__id__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__control__setup.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__device__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__endpoint__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__interface.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__interface__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__iso__packet__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__pollfd.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__ss__endpoint__companion__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__ss__usb__device__capability__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__transfer.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__usb__2__0__extension__descriptor.html
                /usr/share/doc/libusb-1.0-doc/html/structlibusb__version.html
                /usr/share/doc/libusb-1.0-doc/html/sync_off.png
                /usr/share/doc/libusb-1.0-doc/html/sync_on.png
                /usr/share/doc/libusb-1.0-doc/html/tab_a.png
                /usr/share/doc/libusb-1.0-doc/html/tab_b.png
                /usr/share/doc/libusb-1.0-doc/html/tab_h.png
                /usr/share/doc/libusb-1.0-doc/html/tab_s.png
                /usr/share/doc/libusb-1.0-doc/html/tabs.css
                /usr/share/doc/libusb-1.0-doc/html/version_8h_source.html
                /usr/share/doc/libusb-1.0-doc/html/version__nano_8h_source.html
                /usr/share/doc/libusbmuxd4/changelog.Debian.gz
                /usr/share/doc/libusbmuxd4/copyright
                /usr/share/doc-base/libusb-1.0-doc
                /usr/share/lintian/overrides/libusbmuxd4
                /var/cache/apt/archives/libusb-1.0-0-dbg_2%3a1.0.20-1_amd64.deb
                /var/cache/apt/archives/libusb-1.0-0-dev_2%3a1.0.20-1_amd64.deb
                /var/cache/apt/archives/libusb-1.0-doc_2%3a1.0.20-1_all.deb
                /var/lib/dpkg/info/libusb-1.0-0-dbg:amd64.list
                /var/lib/dpkg/info/libusb-1.0-0-dbg:amd64.md5sums
                /var/lib/dpkg/info/libusb-1.0-0-dev:amd64.list
                /var/lib/dpkg/info/libusb-1.0-0-dev:amd64.md5sums
                /var/lib/dpkg/info/libusb-1.0-0:amd64.list
                /var/lib/dpkg/info/libusb-1.0-0:amd64.md5sums
                /var/lib/dpkg/info/libusb-1.0-0:amd64.shlibs
                /var/lib/dpkg/info/libusb-1.0-0:amd64.symbols
                /var/lib/dpkg/info/libusb-1.0-0:amd64.triggers
                /var/lib/dpkg/info/libusb-1.0-doc.list
                /var/lib/dpkg/info/libusb-1.0-doc.md5sums
                /var/lib/dpkg/info/libusbmuxd4:amd64.list
                /var/lib/dpkg/info/libusbmuxd4:amd64.md5sums
                /var/lib/dpkg/info/libusbmuxd4:amd64.shlibs
                /var/lib/dpkg/info/libusbmuxd4:amd64.symbols
                /var/lib/dpkg/info/libusbmuxd4:amd64.triggers
                
                

                the .pro file look like this

                #-------------------------------------------------
                #
                # Project created by QtCreator 2017-01-31T11:51:20
                #
                #-------------------------------------------------
                
                QT       += core gui
                
                greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
                
                TARGET = usb_test
                TEMPLATE = app
                
                # The following define makes your compiler emit warnings if you use
                # any feature of Qt which as been marked as deprecated (the exact warnings
                # depend on your compiler). Please consult the documentation of the
                # deprecated API in order to know how to port your code away from it.
                DEFINES += QT_DEPRECATED_WARNINGS
                
                # You can also make your code fail to compile if you use deprecated APIs.
                # In order to do so, uncomment the following line.
                # You can also select to disable deprecated APIs only up to a certain version of Qt.
                #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
                
                
                SOURCES += main.cpp\
                        mainwindow.cpp
                
                HEADERS  += mainwindow.h
                
                FORMS    += mainwindow.ui
                
                LIBS += -L/usr/lib/x86_64-linux-gnu/
                INCLUDEPATH += /usr/include/libusb-1.0/
                DEPENDPATH += /usr/include/libusb-1.0/
                PRE_TARGETDEPS += /usr/lib/x86_64-linux-gnu/
                

                The mainwindows cpp is just a button who launch then function of the library libusb to get the devices, the tried to put it in a listwidget, i haven't move element to the listwidget because only in the function to get devices it doesn't compile

                #include "mainwindow.h"
                #include "ui_mainwindow.h"
                #include <QStringListModel>
                #include <QStringList>
                #include <QString>
                #include <libusb-1.0/libusb.h>
                
                MainWindow::MainWindow(QWidget *parent) :
                    QMainWindow(parent),
                    ui(new Ui::MainWindow)
                {
                    ui->setupUi(this);
                
                }
                
                MainWindow::~MainWindow()
                {
                    delete ui;
                }
                
                void MainWindow::on_pushButton_clicked()
                {
                    libusb_device **list=NULL; //pointer to the pointer of the devices
                    libusb_context *ctx=NULL;  //the context
                
                    int notification = libusb_get_device_list(ctx,&list); //get a list of device fill dev[] struct
                    
                    QString casa="hello";
                    ui->listWidget->addItem(casa);
                }
                

                when compile i get the error
                /home/pasante/Escritorio/build-usb_test-Desktop_Qt_5_8_0_GCC_64bit-Debug/mainwindow.o:-1: error:In function MainWindow::on_pushButton_clicked()': /home/pasante/Escritorio/usb_test/mainwindow.cpp:29: reference to libusb_get_device_list' without define

                Its the same problem in the program before, this one i more simple, i don't know why is not deference the function of libusb

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  aurquiel
                  wrote on last edited by aurquiel
                  #8

                  I found the solution, in the .pro you only need this to link libusb

                  LIBS +=  -lusb-1.0
                  

                  Here a simple program with tow list widgets one for look the id product an other for the vendor in a decimal way

                  #include "mainwindow.h"
                  #include "ui_mainwindow.h"
                  #include <QStringListModel>
                  #include <QStringList>
                  #include <QString>
                  #include <libusb-1.0/libusb.h>
                  #include <iostream>
                  
                  MainWindow::MainWindow(QWidget *parent) :
                      QMainWindow(parent),
                      ui(new Ui::MainWindow)
                  {
                      ui->setupUi(this);
                  
                  }
                  
                  MainWindow::~MainWindow()
                  {
                      delete ui;
                  }
                  
                  void MainWindow::on_pushButton_clicked()
                  {
                      libusb_device **list=NULL; //pointer to the pointer od the device
                      libusb_context *ctx=NULL;  //the context
                  
                      int r; //for return values
                      ssize_t number_of_devices; //holding number of devices in list
                      r = libusb_init(&ctx); //initialize a library session
                      if(r < 0)
                      {
                          QString one_error="Error library inicialization";
                          ui->listWidget->addItem(one_error);
                  
                      }
                  
                      libusb_set_debug(ctx, 3); //set verbosity level to 3, as suggested in the documentation
                  
                      number_of_devices = libusb_get_device_list(ctx,&list); //get a list of device fil dev[] struct
                  
                      if(number_of_devices < 0)
                      {
                          QString two_error="Any device found";
                          ui->listWidget->addItem(two_error);
                      }
                  
                      unsigned int i=0;  //Iteration the number of drivers founded
                  
                      libusb_device_descriptor descriptor; //Store the decriptions of the USB devices there were founded
                  
                      for (i=0;i<number_of_devices;i++)
                      {
                          int status = libusb_get_device_descriptor(list[i],&descriptor);
                  
                          if(status < 0)
                          {
                              QString three_error="Error on getting description";
                              ui->listWidget->addItem(three_error);
                          }
                  
                          QString idProduct= QString::number((int)descriptor.idProduct);
                          QString idVendor= QString::number((int)descriptor.idVendor);
                  
                          ui->listWidget->addItem(idProduct);
                          ui->listWidget_2->addItem(idVendor);
                      }
                  
                  }
                  
                  

                  You will ablel to see the different usb devices of your computer. I hope some one will find this and solve his problems with libusb qt and linux. It's necessary documentation about this point for other users, i lost a lot of time in this.

                  Cheers guys, any more doubts i will write it in the forum.

                  1 Reply Last reply
                  1

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved