LoadLibrary und die Funktionsnamen



  • Hi,

    ich habe gerade mal versucht eine standard-DLL zu erstellen und darin eine Funktion zu exportieren.
    Das funktioniert soweit auch relativ gut, nur hat die Funktion, wenn ich mir die DLL dann mit "dumpbin /EXPORTS" anschaue immer einen namen wie: "?Test@CDllserverApp@@QAEHXZ".
    Und genau diesen Namen muss ich auch bei GetProcAddress() angeben wenn ich die DLL per LoadLibrary geladen habe, sonst findet er sie nicht.

    Nur das ist ja irgendwie ganz schön unschön, was muss ich noch machen, ausser ein "__declspec( dllexport ) " vor die Funktion die ich exportieren will.

    Ich möchte dann einfach sagen können:

    GetProcAddress(hLib,TEXT("Test"))
    

    anstatt (wie jetzt);

    GetProcAddress(hLib,TEXT("?Test@CDllserverApp@@QAEHXZ"))
    


  • dann musst du den funktionsnamen im c-style exportieren

    z.B.
    extern "C" __declspec(dllexport) void DestroyPlugIn();



  • Jo wunderbar, hatte es schon vor deinem edit hinbekommen 😉 DANKE..

    Allerdings darf dann die Funktion nicht mehr innerhalb der App-Klasse stehen, dann meckert er.. Macht aber nix, die Klasse ist eh irgendwie überflüssig, hab jetzt nur noch Funktionen in der DLL..



  • Tow-B.de schrieb:

    Jo wunderbar, hatte es schon vor deinem edit hinbekommen 😉 DANKE..

    Kann jeder sagen. 🤡



  • Dann glaubst du es halt nicht 😃

    Aber ohne den Tipp von wegen C-Style wär ich wohl so schnell nicht drauf gekommen 👍


Anmelden zum Antworten