usb einbinden



  • Hallo zusammen,

    ich habe ein Problem mit meinem Borland Turbo C++.

    Die libusb -library bekommt man unter: http://libusb-win32.sourceforge.net/

    Ich will da einfach mal den USB-Port anzusprechen mit dem programm. Allerdings
    bringt er mir halt immer nur fehler, der linker.

    Ich habe versucht mir die libusb library einzubinden. Dazu habe ich eine libusb.lib datei in den Ordner: C:\Programme\Borland\BDS\4.0\lib geschoben.

    die Header Datei "usb.h " zu der Library in den ordner: C:\Programme\Borland\BDS\4.0\include kopiert.

    Dazu habe ich die libusb-win32-filter-bin-0.1.12.1.exe heruntergeladen und installiert. Da ist auch ein Sourcecode und Treiber dabei. Das ganze von SourceForge

    So, nun bekomme ich folgedne Fehlermeldung in Borland angezeigt, wenn ich folgendes machen.

    ich erstelle eine Konsolenanwendung und füge folgenden Code in die Unti1.cpp ein:

    #include <usb.h>
    #include <stdio.h>
    #include <iostream>
    
    /* the device's vendor and product id */
    #define MY_VID 1234
    #define MY_PID 5678
    
    /* the device's endpoints */
    #define EP_IN 0x81
    #define EP_OUT 0x01
    
    #define BUF_SIZE 64
    
    using namespace std;
    
    usb_dev_handle *open_dev(void);
    
    usb_dev_handle *open_dev(void)
    {
      struct usb_bus *bus;
      struct usb_device *dev;
    
      for(bus = usb_get_busses(); bus; bus = bus->next) 
        {
          for(dev = bus->devices; dev; dev = dev->next) 
            {
              if(dev->descriptor.idVendor == MY_VID
                 && dev->descriptor.idProduct == MY_PID)
                {
                  return usb_open(dev);
                }
            }
        }
      return NULL;
    }
    
    int main(void)
    {
      usb_dev_handle *dev = NULL; /* the device handle */
      char tmp[BUF_SIZE];
    
      usb_init(); /* initialize the library */
      usb_find_busses(); /* find all busses */
      usb_find_devices(); /* find all connected devices */
    
      if(!(dev = open_dev()))
        {
          printf("error: device not found!\n");
          return 0;
        }
    
      if(usb_set_configuration(dev, 1) < 0)
        {
          printf("error: setting config 1 failed\n");
          usb_close(dev);
          return 0;
        }
    
      if(usb_claim_interface(dev, 0) < 0)
        {
          printf("error: claiming interface 0 failed\n");
          usb_close(dev);
          return 0;
        }
    
      if(usb_bulk_write(dev, EP_OUT, tmp, sizeof(tmp), 5000) 
         != sizeof(tmp))
        {
          printf("error: bulk write failed\n");
        }
    
      if(usb_bulk_read(dev, EP_IN, tmp, sizeof(tmp), 5000) 
         != sizeof(tmp))
        {
          printf("error: bulk read failed\n");
        }
    
      usb_release_interface(dev, 0);
      usb_close(dev);
    
      return 0;
    }
    

    Danach bekomme ich folgende Fehlermeldung:

    [Linker Fehler] Error: Ungelöste externe '_usb_init' referenziert von C:\TEST\DEBUG_BUILD\UNIT1.OBJ
    

    Wie kann ich dne Fehler beheben?

    gruß anno



  • Du solltest nicht die Header und Lib-Dateien in die Standard-Ordner kopieren, sondern du mußt bei den Projektoptionen die Pfade auf die Include- und Library (Bibliothek)-Verzeichnisse von deinem USB-Lib-Verzeichnis setzen.

    Außerdem mußt du einfach die .lib-Datei zu deinem Projekt hinzufügen (statt Filter *.cpp dann . oder *.lib in dem Datei-Öffnen-Dialog wählen).
    Dann sollte er auch automatisch den Library-Pfad gesetzt haben, nur den Include-Pfad mußt du von Hand eintragen.



  • ok dnake hat funktionert mit dem einbinden. also da wäre ich mal echt nicht drauf gekommen.


Anmelden zum Antworten