Udostępnij za pośrednictwem


Eksportowanie funkcji języka C do użycia w plikach wykonywalnych języka C lub C++

Jeśli masz funkcje w bibliotekach DLL napisanych w języku C, możesz użyć makra preprocesora, aby ułatwić dostęp zarówno z języka C, jak i kodu języka C++. __cplusplus Makro preprocesora wskazuje, który język jest kompilowany. Można go użyć do deklarowania funkcji za pomocą połączenia języka C po wywołaniu z kodu języka C++. Jeśli używasz tej techniki i udostępniasz pliki nagłówkowe dla biblioteki DLL, te funkcje mogą być używane przez użytkowników języka C i C++ bez zmian.

Poniższy kod przedstawia plik nagłówkowy, którego mogą używać zarówno aplikacje klienckie C, jak i C++:

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

Czasami może być konieczne połączenie funkcji języka C z plikiem wykonywalny języka C++, ale pliki nagłówka deklaracji funkcji nie używały powyższej techniki. Nadal można wywoływać funkcje z języka C++. W pliku źródłowym C++ opakuj dyrektywę #include , aby zapobiec dekorowaniu nazw funkcji języka C przez kompilator:

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

Co chcesz zrobić?

Co chcesz dowiedzieć się więcej?

Zobacz też

Eksportowanie z biblioteki DLL