SetDllDirectory() wird nicht erkannt



  • Hallo,

    ich habe alles wie unter folgendem Link beschrieben gemacht:

    ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/dllproc/base/setdlldirectory.htm

    Jedoch kommt folgende Fehlermeldung:
    Error 1 error C3861: 'SetDllDirectory': identifier not found d:\blabla\plugin\main.cpp 10

    Wieso?

    #include <iostream>
    #include <windows.h>
    
    using namespace std;
    
    #define  DLL_DIRECTORY L".\\DLL"
    
    int main(void)
    {
    	bool x = SetDllDirectory(DLL_DIRECTORY);
             return 0;
    }
    


  • Dann ist SetDllDirectory wohl nicht im windows.h header. Leider ist dein Link kein wirklicher Link, deswegen kann man nur raten - z.B. dass SetDllDirectory entweder in einem anderen namespace oder in einem anderen Header zu finden ist.

    So ganz nebenbei solltest du dir allerdings mal die mit wichtig gekennzeichneten Threads durchlesen, bevor du postest - in diesem Forum gehts um Standard-C++, für WinAPI gibts ein extra Forum.



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    Lesen:

    Minimum supported client Windows Vista, Windows XP with SP1
    Minimum supported server Windows Server 2003
    Header Winbase.h (include Windows.h)
    Library Kernel32.lib
    DLL Kernel32.dll

    Ohne das Du NTDDI_VERSION definierst oder WINVER wird das wohl nichts.
    Zudem brauchst Du aktuelle Header.
    Siehe: http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx

    Weiterhin bleibt die Frage was der Quatsch soll? Einen relativen Pfad angeben wird das Verhalten Deiner EXE nicht gerade stabil machen.
    Denn dieser relative Pfad würde sich auf das Workingdirectory beziehen.



  • Martin Richter schrieb:

    Ohne das Du NTDDI_VERSION definierst oder WINVER wird das wohl nichts.
    Zudem brauchst Du aktuelle Header.
    Siehe: http://msdn.microsoft.com/en-us/library/aa383745(VS.85).aspx

    Macht MSVS das nicht automatisch?

    Martin Richter schrieb:

    Weiterhin bleibt die Frage was der Quatsch soll? Einen relativen Pfad angeben wird das Verhalten Deiner EXE nicht gerade stabil machen.
    Denn dieser relative Pfad würde sich auf das Workingdirectory beziehen.

    Ich glaub was man dazu sagen sollte ist workingdirectory ist NICHT der pfad zu exe, sondern von wo die exe aus gestartet wurde, d.h. wenn ich ne Verknüpfung auf dem Desktop habe welche die exe startet ist das WD der Desktop. (Hab ich auch immer falsch gemacht 😉 ).



  • Kankomi schrieb:

    Macht MSVS das nicht automatisch?

    Ja schon, aber den richtigen Wert musst du schon setzen, damit die gewünschten Teile aus den Header-Dateien auch eingebunden werden.

    Kankomi schrieb:

    Ich glaub was man dazu sagen sollte ist workingdirectory ist NICHT der pfad zu exe, sondern von wo die exe aus gestartet wurde, d.h. wenn ich ne Verknüpfung auf dem Desktop habe welche die exe startet ist das WD der Desktop. (Hab ich auch immer falsch gemacht 😉 ).

    Nein, nicht unbedingt, denn bei Verknüpfungen kann man selbst festlegen, wo das WD liegt. Wenn man das z.B. in XP über "Neue Verknüpfung erstellen" oder "Senden an Desktop" macht, gibt es ein Feld (in den Eigenschaften der Verknüpfung), in dem das WD festgelegt wird, bei diesen Methoden ist es auch so, dass für das WD automatisch der Pfad zur ausführbaren Datei eingetragen wird.

    MfG,

    Probe-Nutzer


Anmelden zum Antworten