dll per LoadLibraryEx "includen"



  • Du sollst den Dependency Walker benutzen, nicht bei DEPENDENTS in der MSDN nachlesen!

    Der "Dependency Walker" gehört normalerweise zum Lieferumfang von VC++ 6.0!

    Solltest Du ihn aber separat benötigen, kannst Du ihn HIER herunterladen!

    Und nun erfreu Dich dran was der Dependency Walker Dir über Deine DLL erzählt...



  • 😉 Den Namen der DLL solltest du schon wissen, zumindest den must du bei dem loadlibrary ja angeben 😉



  • den name weiß ich natürlich^^
    ne also der depency walker geht auf der dll die ich brauch nicht, auf einer anderen, die ich geschrieben habe geht es zwar, aber da zeigt er mir auch nicht wirklich die funktionsnamen an, was ich ja eigenltich wollte



  • wenn das wirklich nicht gehen sollte, kannst du auch keine funktionen aus der dll benutzen.

    wie lautet denn die fehlermeldung?



  • also dass ihr mich nicht falsch versteht, ich will einfach nur aus der dll die funktionsnamen rausfinden, um sie dann weiterleiten zu können



  • Also, mal abgesehen davon das man schon etwas Ahnung haben sollte, wenn man DLL's programmieren/erweitern will sag mal eben welche DLL Du da anschauen willst.

    Dann können wir das hier vor Ort mal austesten, ob der Dependency-Walker wirklich keine Infos rausrückt...

    Also, was für eine merkwürdige DLL ist das?



  • winsock.dll



  • Error: At least one file was not a 32-bit or 64-bit Windows module.



  • ...und warum willst Du die Winsock.dll mit LoadLibrary laden?!?

    Welchen Sinn verfolgt das Ganze?

    (winsock.dll ist übrigens ein 16-Bit Modul, deshalb kann der Walker die DLL nicht abgrasen)

    HIER findest Du alle Winsock Funktionen und mehr...



  • ok danke,
    und wie verlink ich jetzt die ganzen funktionen weiter?
    also ich habs jetzt so:

    typedef VOID (*MYPROC)(LPTSTR); 
    
    int main(VOID) 
    { 
        HINSTANCE hinstLib;
        MYPROC ProcAdd; 
        BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;  
        hinstLib = LoadLibrary("tools"); 
    
        if (hinstLib != NULL) { 
            ProcAdd = (MYPROC) GetProcAddress(hinstLib, "accept");
            ProcAdd = (MYPROC) GetProcAddress(hinstLib, "AcceptEx");
            ProcAdd = (MYPROC) GetProcAddress(hinstLib, "bind");
            .
            .
            .
        }
        if (ProcAdd != NULL) 
            {
                fRunTimeLinkSuccess = TRUE;
                (ProcAdd) ("message via DLL function\n"); 
            }
            fFreeResult = FreeLibrary(hinstLib); 
        }  
        if (! fRunTimeLinkSuccess) {
            printf("message via alternative method\n"); 
        }
        return 0;
    }
    

    was is da jetz noch falsch? (der code stammt aus msdn)



  • Mein Gott, Junge, lies Dir den Sockets Abschnitt in der MSDN durch!

    Man lädt nicht die DLL, sondern man linkt LIBs und includet Header-Files!

    Für Socket-Programmierung sind das z. B.:

    #include <WinSock2.h>
    

    ...und die wsock32.lib mußt Du einbinden...

    Dann kannst Du alle WinSock-Funktionen nutzen...

    Komm nicht eher wieder bevor Du das hier gelesen und verstanden hast!



  • nein du hast mich falsch verstanden.
    ich weiß wie ich sockets etc. benutze.
    aber ich will eben eine Funktion in die winsock.dll "hinzufügen", dazu muss ich eine neue reinladen, die dann die aufrufe von windows an die alte winsock32.dll weiterlinkt



  • ...und warum will jemand in eine vollkommen veraltete, nur noch aus kompatibilitätsgründen vorhandene 16bit DLL eine Funktion hinzufügen?!?

    Welche Funktionalität fehlt Dir denn (mal abgesehen davon, das heutzutage eh alles über die ws2_32.dll abläuft anstatt über die Winsock.dll)?



  • nächste woche muss ich meinen pc zu testzwecken bereitstellen.
    und das ist eben eine möglichkeit ein programm im hintergrund laufen zu lassen, ohne es 1. extra aufrufen zu müssen und 2. nicht leicht zu schliesen ist, da es ja von windows verwendet wird.
    und ich will darin eben geschehnisse loggen, bzw. dinge, die ich von vornherein nicht erlauben werde unterbinden.
    ich weiß es gibt vielleicht viele tools für sowas, aber so kann ich eben genau das, was ich brauche sicherstellen und die sicherheit dass das programm nicht beendet werden kann lässt mich ruhig bleiben 🙂



  • und wenn du mir helfen könntest wie ich die funktionen so aufrufbar mache, dass das ganze funktioniert wäre ich dir sehr dankbar


Anmelden zum Antworten