Exportieren von C-Funktionen für die Verwendung in ausführbaren Dateien der C- oder C++-Sprache

Wenn Sie Über Funktionen in einer in C geschriebenen DLL verfügen, können Sie ein Präprozessormakro verwenden, um den Zugriff über C-Sprache und C++-Sprachcode zu erleichtern. Das __cplusplus Präprozessormakro gibt an, welche Sprache kompiliert wird. Sie können sie verwenden, um die Funktionen mit C-Verknüpfung zu deklarieren, wenn sie aus C++-Sprachcode aufgerufen wird. Wenn Sie diese Technik verwenden und Headerdateien für Ihre DLL bereitstellen, können diese Funktionen von C- und C++-Benutzern ohne Änderung verwendet werden.

Der folgende Code zeigt eine Headerdatei, die sowohl C- als auch C++-Clientanwendungen verwenden können:

// 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

Manchmal müssen Sie C-Funktionen möglicherweise mit Ihrer ausführbaren Datei C++ verknüpfen, aber die Headerdateien der Funktionsdeklaration haben die oben beschriebene Technik nicht verwendet. Sie können die Funktionen weiterhin aus C++ aufrufen. Schließen Sie in der C++-Quelldatei die #include Direktive um, um zu verhindern, dass der Compiler die C-Funktionsnamen ausrichten kann:

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

Wie möchten Sie vorgehen?

Worüber möchten Sie mehr erfahren?

Siehe auch

Exportieren aus einer DLL