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?
Exportieren aus einer DLL mithilfe einer DLL
__declspec(dllexport)
Importieren in eine Anwendung mithilfe von
__declspec(dllimport)