Habe Probleme, wenn ich die <windows.h> in mein C++/CLI Projekt einbinde



  • Hallo,

    ich habe folgendes Problem.
    Ich habe die windows.h in meinem Projekt eingebunden.
    Nun möchte ich gerne den aktuellen Pfad meines Programms ausgeben lassen.
    Mit folgendem Code...

    String^ _pfad = System::IO::Directory::GetCurrentDirectory();
    MessageBox::Show(_pfad);
    

    Geht mit der eingebunden windows.h nicht.
    Er bezieht sich immer auf GetCurrentDirectoryW aus der <windows.h>

    Fehler 1 error C2039: 'GetCurrentDirectoryW': Ist kein Element von 'System::IO::Directory'
    Fehler 2 error C2660: 'GetCurrentDirectoryW': Funktion akzeptiert keine 0 Argumente

    Wie kann ich dem Compiler klar machen, dass ich GetCurrentDirectory von System::IO::Directory benutzen möchte und nicht GetCurrentDirectory von <windows.h>, also GetCurrentDirectoryW

    Weil System::IO::Directory::GetCurrentDirectory();, ist doch wohl schon deutlicher als genug?

    Ich hoffe es kann mir einer helfen, da ich einige Funktion von der Windows.h unbedingt brauche.

    Danke schonmal.... :xmas2:



  • Hallo,

    da scheint GetCurrentDirectory ein #define zu sein.

    Probier mal folgendes aus:

    #ifdef GetCurrentDirectory
    #undef GetCurrentDirectory
    #endif
    String^ _pfad = System::IO::Directory::GetCurrentDirectory();
    MessageBox::Show(_pfad);
    


  • Super, dass funzt.
    Also muss ich das #define einmal löschen?
    Ich habe den Code Global eingefügt...

    #pragma once
    
    #include <windows.h> 
    #include "iostream"
    
    #ifdef GetCurrentDirectory 
    #undef GetCurrentDirectory 
    #endif
    

    Ist das so in Ordnung?

    Danke für die Hilfe... Supi *Freu*

    Gruß,

    David



  • Ich würde es so lokal wie möglich machen.
    Du kriegst anonsten irgendwann einfach den komplementär- Fall dazu.



  • Besser wäre:

    #pragma push_macro("GetCurrentDirectory")
    #undef GetCurrentDirectory
    // ...
    #pragma pop_macro("GetCurrentDirectory")
    

    PS: Es gibt noch viel mehr solcher Namen, die Kollidieren...



  • Danke für die Antworten, was der Code bewirkt habe ich nun nachgelesen.
    Kannte diese Möglichkeit noch nicht.
    Werde die Version von Jochen nutzen und vor allem lokal.

    Ist die Version von taraneas auch üblich und sicher?

    Vielen Dank für die Hilfe.

    Danke...

    David.


Anmelden zum Antworten