__stdcall ohne decorated names



  • Ich exportiere eine DLL-Funktion folgendermaßen

    extern "C"
    __declspec(dllexport)
    void __stdcall foo(void)
    {
    }

    Das ergebnis ist eine Funktion mit folgendem 'decorated name'
    _foo@0

    Jetzt würd ich's aber gern so haben, dass der Name nicht gemangelt wird und die Funktion schlicht 'foo' heißen würde. Das geht auch, wenn ich __stdcall ganz weglasse, nur bewirkt ja das __stdcall nicht nur wie der Name aussieht, sondern auch die Reihenfolge der Parameter auf dem Stack etc. pp.

    Wie mach ich das?



  • Schau auf meiner Homepage unter "DLL's" nach.
    Mit einer *.def Datei kannst du das machen.

    http://members.inode.at/anton.zechner/az/index.html



  • hab ich vorhin vergessen:

    Verwende VC++.NET

    In Borland C++ kann ich einstellen, ob er nen Underscore macht und das "@..." macht er sowieso nicht. Kann ich das mit VC++ nicht auch ohne def-Datei hinkriegen? Oder kann man die Def-Datei irgendwie automatisch generieren. Für zig Funktionen jetzt wieder einen Eintrag in die Def-Datei machen, bei jeder Funktion nachgucken, was hinter dem "@" steht ... das ist doch schon ein bisschen 🙄


Anmelden zum Antworten