Freigeben über


Exportieren von C-Funktionen zur Verwendung in ausführbaren C- oder C++-Dateien

Wenn eine DLL in C geschriebene Funktionen enthält und auf diese Funktionen über ein C- oder C++-Sprachmodul zugegriffen werden soll, sollten Sie das __cplusplus-Präprozessormakro verwenden, um zu bestimmen, welche Sprache kompiliert wird. Anschließend sollten Sie diese Funktionen mit C-Bindung deklarieren, sofern sie von einem C++-Sprachmodul verwendet werden. Wenn Sie diese Technik anwenden und Headerdateien für die DLL bereitstellen, können diese Funktionen ohne weitere Änderungen von C- und C++-Benutzern verwendet werden.

Der folgende Code stellt eine Headerdatei dar, die sowohl von C- als auch von C++-Clientanwendungen verwendet werden kann:

// MyCFuncs.h
#ifdef __cplusplus
extern "C" {  // only need to export C interface if
              // used by C++ source code
#endif

__declspec( dllimport ) void MyCFunc();
__declspec( dllimport ) void AnotherCFunc();

#ifdef __cplusplus
}
#endif

Wenn Sie C-Funktionen mit einer ausführbaren C++-Datei verknüpfen müssen und die oben beschriebene Methode in den Headerdateien mit den Funktionsdeklarationen nicht verwendet wurde, können Sie wie folgt verhindern, dass die C-Funktionsnamen vom Compiler ergänzt werden:

extern "C" {
#include "MyCHeader.h"
}

Was möchten Sie tun?

Worüber möchten Sie mehr erfahren?

Siehe auch

Konzepte

Exportieren aus einer DLL