Frage zu extern "C" bei Dll Export?



  • Hallo,

    was bedeutet das eigentlich genau, wenn ich aus einer Dll Methoden exportiere und die Anweisung extern "C" ist mit dabei?

    #ifdef __cplusplus

    extern "C"
    {
    #endif

    EXPORT void func();
    EXPORT void func2();

    #ifdef __cplusplus
    }
    #endif

    Warum macht so ein Umschließen mit extern "C"?

    Vielen Dank!



  • Hallo,
    extern "C" ist eine Bindekonvention. In diesem Fall sagst du, dass deine Funktionen func und func2 nach den C Binderegeln gebunden werden sollen. Damit werden diese Funktionen für alle Sprachen die diese Regeln befolgen können (z.B. C, C++, Fortran, Assembler) aufrufbar.

    Das Wichtigste hier ist, dass kein Name-Mangling stattfindet. Die Symbolnamen der Funktionen sind also eindeutig und unabhängig von einem bestimmten Compiler.



  • Danke für Deine Antwort, daß hat mir jetzt weitergeholfen!


Anmelden zum Antworten