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