[gelöst] Dll-Funktionen bekommen "Zusatz" (@8)

    • Offizieller Beitrag

    Hi,
    ich habe gerade meine ersten Gehversuche mit C++ gemacht.
    Es ist mir dann auch gelungen eine funktionierende Dll zu erstellen. (IDE: CodeBlocks, Kompiler: GNU GCC)
    Soweit ich gelesen habe, soll das Voranstellen von "extern "C" __declspec(dllexport) ..." dafür sorgen, dass ich die Funktionen in der Dll auch mit dem vergebenen Namen ansprechen kann.
    Es wird jedoch trotzdem an den Funktionsnamen "@8" angehängt, wobei die Zahl abhängig ist vom belegten Speicherplatz.
    Hier mal meine Test-Dll:

    main.h
    main.cpp


    Muß ich da noch weitere Angaben machen oder Kompilerdirektiven verwenden?

    • Offizieller Beitrag

    Ich danke dir, das wars. :thumbup:
    So paßt es:

    main.cpp
  • Falls du kein cdecl möchtest, gibt es bei mingw auch einen Compilerswitch: --add-stdcall-alias
    Damit schreibst du die Funktion dann so, der Compiler macht dann zwei Namen daraus. EInmal mangled und einmal unmangled.
    __declspec (dllexport) void __stdcall FooBar (void)
    http://www.mingw.org/wiki/Visual_Basic_DLL

    Bei VC++ muss man das etwas anders machen, aber auch da ist es möglich, stdcall-Funktionen mit einfachem Namen zu erstellen.