setupapi.h eingebunden und trotzdem Linkerfehler



  • Hallo

    Ich steh gerade wieder mal ein wenig auf dem Schlauch und brauch nochmal ein paar Augen mehr, die mir helfen einen aktuellen Linkerfehler "LNK2019" zu finden.

    Folgende Sachlage:

    Ich versuch die diverse Funktionen aus der Setupapi.dll aufzurufen. Dazu hab ich in der MSDN folgendes Beispiel gefunden:

    http://support.microsoft.com/kb/259695

    Ich hab angefangen den Code so in mein Projekt zu übernehmen um auch nachvollziehen zu können was da an den einzelnen Stellen passiert. Mein Projekt ist eine DLL, die für ein USB-Gerät sein soll.

    Also hier mein derzeitiges Codeschnipsel:

    #include <windows.h>
    #include <setupapi.h>
    
    HANDLE initJoystick() {
    	HDEVINFO hDevInfo;
    
        // Create a HDEVINFO with all present devices.
        hDevInfo = SetupDiGetClassDevs(NULL,0,0,DIGCF_PRESENT | DIGCF_ALLCLASSES );
    
    	return INVALID_HANDLE_VALUE;
    }
    

    Soweit so gut.

    Compiliert wird es auch, nur der Linker wirft eben den Fehler:

    : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SetupDiGetClassDevsW@16" in Funktion "_initJoystick@0".

    Ich vermute irgendwelche Projekteinstellungen, die nicht richtig angepasst sind aber ich komem nicht drauf welche. Die Planung sagt, dass ich ein reines C++ Projekt erstellen möchte, die eigentlich nur API Funktionen nutzt. Leider ist es für mich nach wie vor noch schwierig die Projektoptionen genau zu definieren.

    Könnt ihr mir da mal kurz unter die Arme greifen? Wird die setupapi.dll durch das einbingen der setupapi.h schon korrekt eingebunden?

    Danke schon mal im Voraus.

    Grüße
    Daimonion



  • #pragma comment(lib, "setupapi.lib")
    

    und wenn du ned VS benutzt, dann is die frage hier spätestens falsch.



  • Hallo und Danke für die Antwort.

    Hab während dem Mittagessen überlegt warum mein Code den Fehelr geworfen hat und mit deiner Erläuterung dazu ist mir das jetzt auch klar geworden.

    Ich könnte jetzt die Lib entweder über die Projektoptionen einbinden oder mittels deines Codefragments, wobei mir deine Variante übersichtlicher erscheint.

    Danke

    Grüße
    Daimonion


Anmelden zum Antworten