Экспорт функций на языке C для использования в исполняемых файлах, исходный код которых написан на языке C или C++
Обновлен: Ноябрь 2007
Если в библиотеке 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:
extern "C" {
#include "MyCHeader.h"
}