Problem mit PathIsDirectoryEmpty



  • Hallo Leutz,

    ich hab eine kleine Funktion geschrieben, die prüfen soll ob ein Verzeichnis leer
    ist um dann über einen "if Zweig" andere Sachen zu machen je nachdem wie das Ergebnis der Prüfung ausgefallen ist. Dafür habe ich die Funktion PathIsDirectoryEmpty gefunden, allerdings bekomme ich beim kompilieren
    folgende Fehlermeldung:

    undefined reference to `_imp__PathIsDirectoryEmptyA@4'|
    

    als zusätzlichen Header habe ich shlwapi.h inkludiert.
    Meine IDE ist CodeBlocks 13.12
    Windows 7 Professional

    Hier meine Funktion:

    BOOL WriteToFile()
        {
    
            LPCSTR Ordner = "\\Data";
    
            const BOOL Check = PathIsDirectoryEmpty(Ordner);
    
                if(Check == TRUE)
                {
                    MessageBox(NULL, "1", "2", MB_OK);
                    return TRUE;
                }
                else
                {
                    MessageBox(NULL, "3", "4", MB_OK);
                    return TRUE;
                }
        }
    

    Was mache ich falsch? Wäre nett wenn mir jemand behilflich sein könnte,
    hab schon die Suche und Google bemüht allerdings mit wenig erfolg.

    MFG
    DeeJayExTasy



  • Du musst gegen die shlwapi.lib linken.
    Entweder in den Projekteinstellungen angeben oder, wenn du einen Compiler verwendest der Auto-Linking unterstützt (MSVC, Clang) indem du

    #pragma comment(lib, "shlwapi.lib")
    

    in eines deiner .cpp Files schreibst.

    GCC kann es (Auto-Linking) AFAIK immer noch nicht, nichtmal die Windows Ports.
    (Falls sich da was getan hat, und das nicht mehr stimmt, bitte korrigiert mich!)



  • Tut mir leid hustbaer, ich hatte das wohl vergessen zu erwähnen, ich habe
    die lib selbstverständlich auch gelinkt, so sieht es bei mit im Header aus:

    #include <shlwapi.h>//PathIsDirectoryEmpty
    
    #pragma comment (lib, "shlwapi.lib")
    

    ich bekomme trotz alle dem die Fehlermeldung, weiß auch leider nicht
    mehr weiter, muss wohl einen anderen Weg finden um herauszukriegen
    ob mein Verzeichniss leer ist.

    Mfg

    DeeJay



  • Passiert dies auch wenn du ein neues Projekt öffnest und es dort versuchst?

    Hier evtl. noch eine Lösung wie Du überprüfen kannst ob ein Ordner leer ist:
    http://stackoverflow.com/a/1136247



  • @deejayextasy
    Dann wird der Grund vermutlich sein dass CodeBlocks GCC verwendet, und dieser #pragma comment(lib) nicht unterstützt.
    => Bei den Linkeroptionen -lshlwapi angeben.



  • Vielen Dank für eure Hilfe, tut mir leid das ich mich erst jetzt melde, war
    ein paar Tage nicht "da".

    Ja, es passiert auch wenn ich ein neues Projekt erstelle,
    so wie es aussieht hat hustbaer recht und meine IDE kann anscheinend
    folgende Zeile nicht richtig interpretieren ->

    #pragma comment(lib, "shlwapi.lib")
    

    wenn ich die shlwapi direkt linke, über die Projektoptionen, funktioniert es.

    Also vielen Dank nochmal für eure mühe, Thema ist damit erledigt.

    MFG

    DeeJayExTasy


Anmelden zum Antworten