Вам необходимо использовать extern "C"
в заголовочных файлах объявлений импортированных процедур, чтобы использовать связь C.
В настоящий момент происходит то, что компилятор C ++ ожидает искаженных имен для ваших импортированных функций. Использование extern "C"
отключает искажение имени в C ++.
Например:
extern "C"
{
int Func1(int a, int b);
void Func2(double a);
}
Поскольку у вас есть контроль над заголовочным файлом, имеет смысл поместить extern "C"
в заголовочный файл. Это означает, что любому, кто использует ваш заголовочный файл, не нужно беспокоиться о таких проблемах. Однако, если вы включаете заголовочные файлы, над которыми у вас нет контроля, то предложение @ Nawaz - отличный способ сделать это.
Я также забыл упомянуть тот замечательный момент, который делает @bcsanches: extern "C"
- это C ++, а не C. Таким образом, его необходимо включить условно, если вы хотите, чтобы один заголовочный файл работал как для C, так и для C ++.