Экспорт функций C для использования в исполняемых файлах языка C или C++
Если у вас есть функции в библиотеке DLL, написанной на C, можно использовать макрос препроцессора, чтобы упростить доступ к ним из языка C и кода языка C++. Макрос __cplusplus
препроцессора указывает, какой язык компилируется. Его можно использовать для объявления функций с компоновкой C при вызове из кода языка C++. При использовании такого приема и предоставлении файлов заголовков для библиотеки DLL функции можно использовать как в C, так и в C++ без изменений.
В следующем коде показан файл заголовка, который могут использовать клиентские приложения C и 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
Иногда может потребоваться связать функции C с исполняемым файлом C++, но файлы заголовков объявления функции не использовали приведенный выше метод. Вы по-прежнему можете вызывать функции из C++. В исходном файле C++ заключите директиву #include
, чтобы предотвратить декорирование имен функций C компилятором:
extern "C" {
#include "MyCHeader.h"
}