Terminalausgabe Testprogramm



  • Erst einmal Dank für die Antwort.

    So ähnlich habe ich mir das gedacht - wie füge ich den eine Library zu den Linkoptionen hinzu?
    Anbei Quelltext von dem Testprogramm:

    
    #include <iostream>
    #include "stdio.h"
    #include "libusb.h"
    
    	using namespace std;
    
    	 
    
    	void printdev(libusb_device *dev); //prototype of the function
    
    	 
    
    	int main() {
    
    	    libusb_device **devs; //pointer to pointer of device, used to retrieve a list of devices
    
    	    libusb_context *ctx = NULL; //a libusb session
    
    	    int r; //for return values
    
    	    ssize_t cnt; //holding number of devices in list
    
    	    r = libusb_init(&ctx); //initialize a library session
    
    	    if(r < 0) {
    
    	        cout<<"Init Error "<<r<<endl; //there was an error
    
    	                return 1;
    
    	    }
    
    	    libusb_set_debug(ctx, 3); //set verbosity level to 3, as suggested in the documentation
    
                cnt = libusb_get_device_list(ctx, &devs); //get the list of devices
    
    	    if(cnt < 0) {
    
    	        cout<<"Get Device Error"<<endl; //there was an error
    
    	    }
    
    	    cout<<cnt<<" Devices in list."<<endl; //print total number of usb devices
    
    	        ssize_t i; //for iterating through the list
    
    	    for(i = 0; i < cnt; i++) {
    
    	                printdev(devs[i]); //print specs of this device
    
            }
    
    	        libusb_free_device_list(devs, 1); //free the list, unref the devices in it
    
    	        libusb_exit(ctx); //close the session
    
    	        return 0;
    
    	}
    
    	 
    	void printdev(libusb_device *dev) {
    
    	    libusb_device_descriptor desc;
    
    	    int r = libusb_get_device_descriptor(dev, &desc);
    
    	    if (r < 0) {
    
    	        cout<<"failed to get device descriptor"<<endl;
    
    	        return;
    
    	    }
    
    	    cout<<"Number of possible configurations: "<<(int)desc.bNumConfigurations<<"  ";
    
    	    cout<<"Device Class: "<<(int)desc.bDeviceClass<<"  ";
    
    	    cout<<"VendorID: "<<desc.idVendor<<"  ";
    
    	    cout<<"ProductID: "<<desc.idProduct<<endl;
    
    	    libusb_config_descriptor *config;
    
    	    libusb_get_config_descriptor(dev, 0, &config);
    
    	    cout<<"Interfaces: "<<(int)config->bNumInterfaces<<" ||| ";
    
    	    const libusb_interface *inter;
    
    	    const libusb_interface_descriptor *interdesc;
    
    	    const libusb_endpoint_descriptor *epdesc;
    
    	    for(int i=0; i<(int)config->bNumInterfaces; i++) {
    
    	        inter = &config->interface[i];
    
    	        cout<<"Number of alternate settings: "<<inter->num_altsetting<<" | ";
    
    	        for(int j=0; j<inter->num_altsetting; j++) {
    
    	            interdesc = &inter->altsetting[j];
    
    	            cout<<"Interface Number: "<<(int)interdesc->bInterfaceNumber<<" | ";
    
    	            cout<<"Number of endpoints: "<<(int)interdesc->bNumEndpoints<<" | ";
    
    	            for(int k=0; k<(int)interdesc->bNumEndpoints; k++) {
    
                            epdesc = &interdesc->endpoint[k];
    
    	                cout<<"Descriptor Type: "<<(int)epdesc->bDescriptorType<<" | ";
    
    	                cout<<"EP Address: "<<(int)epdesc->bEndpointAddress<<" | ";
    
    	            }
    
    	        }
    
    	    }
    
    	    cout<<endl<<endl<<endl;
    
    	    libusb_free_config_descriptor(config);
    
    	}
    
    


  • @Timo_R sagte in Terminalausgabe Testprogramm:

    So ähnlich habe ich mir das gedacht - wie füge ich den eine Library zu den Linkoptionen hinzu?

    Wie rufst du den Compiler auf, bzw. wie compilierst du?



  • Wie willst du denn mit Libs arbeiten, wenn du nicht weißt, wie du diese einbinden mußt?

    Da du NetBeans benutzt, gehe in die Projekteigenschaften unter "Build"->"Linker" und füge dort die Lib (+ Pfad) hinzu, s. NetBeans: Quickstart "Setting Project Properties".



  • Sehe ich nicht ganz so TH69 -

    Es handelt sich dabei doch nur um eine einfache c++ Quelldatei, kein Projekt o. ä. -
    Wo finde ich denn diese Projekteigenschaften? "Build" -> "Linker"

    Anbei ich benutze g++.



  • @Timo_R sagte in Terminalausgabe Testprogramm

    Anbei ich benutze g++.

    g++ ist der Compiler, NetBeans die IDE.



  • Wie Sie sagen, soll ich das jetzt bei einem Experten wie Ihnen auch ausführen?



  • Werter Herr, anbei wiederhole ich Ihre letzte Frage, da diese nicht verständlich zu seien scheint:

    @Timo_R sagte in Terminalausgabe Testprogramm:

    Wie Sie sagen, soll ich das jetzt bei einem Experten wie Ihnen auch ausführen?



  • Danke reicht schon,
    konstruktive Unterstützung hier - merk ich schon - Sache ist hochkomplex.



  • Meiner Meinung nach, mache ich irgendwas beim Kompilieren mit g++ falsch, da muss
    in der Zeile irgendwie die Bibliothek verlinkt werden.

    Aber Dankeschön



  • Rufst du denn den Compiler per Hand auf? Warum überläßt du das nicht der IDE?

    Ansonsten informiere dich mal über die gcc-Optionen -l und -L...



  • Uii, das hast du schon 17 Stunden nachdem @Th69 dir das gesagt hat realisiert?



  • @Jockelx - Das wollten Sie mir jetzt mitteilen?



  • Was man dir die ganze Zeit zu erklären versucht:
    Der Compiler macht alles richtig, er übersetzt dein Programm und erzeugt die passenden Objektdateien. Danach ist der Linker dran und soll das alles zusammenbauen, scheitert aber, weil er Funktionseinsprungspunkte nicht findet. Dazu gibt´s jetzt zwei Lösungen:

    1. Du nimmst alle libUSB Quelltextdateien in dein Projekt auf, dann werden sie vom Compiler übersetzt und an den Linker weitergereicht.
    2. Du teilst dem Linker mit, dass sich die Funktionen in einer Bibliothek befinden und der Linker sucht in dieser Bibliothek nach den Einsprungspunkten.

    Ich habe den Eindruck, dass du C++ Anfänger bist und (noch) nicht weißt, wie du die Frage zu deinem Problem formulieren sollst. Daher kam auch die Aufforderung, die Fehlermeldungen zu posten, weil man daraus genau erkennen kann, wo das Problem liegt.
    Dass du jetzt darauf bestehst, dass das Problem beim Compiler liegt zeigt, dass du das Problem nicht verstanden hast. Vielleicht solltest du einfach mal die dir hier gegebenen Ratschläge befolgen, denn die Leute hier wissen, wovon sie reden.



  • @Timo_R Ja.
    Ich verstehe halt nicht, wieso man eine Frage stellt, aber die Antworten nicht liest.



  • @DocShoe --- Einmal 2. bittesehr ---



  • @Th69 sagte in Terminalausgabe Testprogramm:

    Wie willst du denn mit Libs arbeiten, wenn du nicht weißt, wie du diese einbinden mußt?

    Da du NetBeans benutzt, gehe in die Projekteigenschaften unter "Build"->"Linker" und füge dort die Lib (+ Pfad) hinzu, s. NetBeans: Quickstart "Setting Project Properties".

    Hat Th69 schon geschrieben. Ich benutze die NetBeans IDE nicht und habe keine Ahnung, wo man das da einstellen kann.



  • @Jockelx

    Wären Sie in den fachlichen Antworten hier im Forum so fähig, wie Sie es bei Anmerkungen zur Arbeitsweise anderer sind, hätte ich dieses Problem bestimmt schon gelöst.



  • @Timo_R sagte in Terminalausgabe Testprogramm:

    @Jockelx

    Wären Sie in den fachlichen Antworten hier im Forum so fähig, wie Sie es bei Anmerkungen zur Arbeitsweise anderer sind, hätte ich dieses Problem bestimmt schon gelöst.

    Uiiii. Böser Fehler. Regulars anzukacken ist selten eine gute Idee. Senkt die Bereitschaft anderer Regulars zu helfen enorm.



  • Ich möchte es aber separat mit g++ kompilieren -



  • ES IST KEIN COMPILERFEHLER!!!!einself
    Du musst dem LINKER den Namen der Bibliothek mitteilen.


Anmelden zum Antworten