DLL wird nicht geladen - Fehlercode bzw. Exception?



  • Hi MFC-ler,

    habe zwar so bisschen C++ - Erfahrung, in MFC schauts allerdings nicht so gut aus.

    Nun soll da in einem älteren Projekt, das ich grad bisschen erweitern soll, eine Drucker-DLL geladen werden, allerdings schlägt der Ladeversuch stets fehl. ( -> quasi MessageBox ("war nix") ).

    Wie bekomme ich eine ausführlichere Auskunft als nur

    AfxLoadLibrary(_T("PrinterD.dll"))) gleich NULL oder eben nicht NULL ?

    -> Fehlercode bzw. Exception 🙂

    ( Oder muss ich die einzelnen Fehlerquellen der Reihe nach manuell checken, z.B. indem ich versuche, die Datei erstmal so zu öffnen, um zu sehen, ob sie überhaupt existiert usw.? )

    Gruß Maik



  • Nein eine Exception wird nicht geworfen, in der MSDN steht auch nichts weiter dazu, außer halt dem bei Fehler kommt NULL zurück



  • Versuch es mal damit:

    char tb[MAX_PATH];
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tb,sizeof(tb),NULL);
    

    Gruß André



  • av_privat schrieb:

    Versuch es mal damit:

    char tb[MAX_PATH];
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,tb,sizeof(tb),NULL);
    

    lol, wie kommst du darauf MAX_PATH als Länge für eine Fehlermeldung zu nehmen?



  • Wieso sollte ich dies nicht verwenden?
    Ich habe keine Ahnung wie groß die Meldung wird, also nehme ich einfach mal was Großes und hoffe es reicht. Wenn es nicht reicht, dann sollte zumindest in den ersten 256 Zeichen soviel Infos enthalten sein, damit man eine Aussage treffen kann.
    Gut, man könnte auch 256 schreiben, das ist halt Macht der Gewohnheit. 🙂

    Gruß André



  • normalerweise lässt man FormatMessage den Speicher selber beschaffen, dann hat man dieses Problem überhaupt nicht.



  • hihi, auch ne Möglichkeit.
    Ich habe mich noch nie wirklich mit dieser Funktion beschäftigt, da ich sie immer für Debug-Zwecke missbraucht habe (wenn mal wieder was nicht ging und nur die letzte Fehlernummer hilft). Da hat es so immer seinen Zweck erfüllt. 😉

    Gruß André


Anmelden zum Antworten