Проблемы совмещения Си библиотек в С++ (conflicts with new declaration with C linkage)

Модератор: Модераторы разделов

Аватара пользователя
Electronix
Сообщения: 53
ОС: Slackware, Suse, XP

Проблемы совмещения Си библиотек в С++

Сообщение Electronix »

Есть библиотека написанная на Си. Я хочу сделать для нее враппер. Вначале попытался написать простой пример и скомпилировать его g++. Собственно проблема появилась сразу, компилятор выдает ошибки conflicts with new declaration with C linkage, для всех функций, которые я использую в примере.
После include, вставлена секция extern "C" {}, в которую скопированы все обьявления функций (их хедер файла библиотеки), который используются в примере.
Полностью ошибки выглядят так :
error: previous declaration of <функция> with C++ linkage
error: conflicts with new declaration with C linkage

В чем проблема, как исправить ?
Все тоже самое, компилируемое gcc - компилируются и линкуется без ошибок.
We have no beginning, we have no end. We are infinite.
Спасибо сказали:
Аватара пользователя
CycaHuH
Сообщения: 85
ОС: FreeBSD; Archlinux; Calculate

Re: Проблемы совмещения Си библиотек в С++

Сообщение CycaHuH »

А можно код?
Спасибо сказали:
Аватара пользователя
Electronix
Сообщения: 53
ОС: Slackware, Suse, XP

Re: Проблемы совмещения Си библиотек в С++

Сообщение Electronix »

Код не могу. Могу приблизительно :

Код: Выделить всё

#include <clib.h>

extern "C"
{
int clibfunca();
int clibfuncb();
}

int main()
{
      clibfuna();
      clibfunb();
      return 0;
}

clib.h - хедер файл библиотеки. clibfunca, clibfuncb - ее фунцкии.
We have no beginning, we have no end. We are infinite.
Спасибо сказали:
Аватара пользователя
Electronix
Сообщения: 53
ОС: Slackware, Suse, XP

Re: Проблемы совмещения Си библиотек в С++

Сообщение Electronix »

Проблему решил.
Просто нужно было в самой библиотеке (clib.h) сделать их extern (с помощью ifdef __cplusplus), а не в исходнике, в котором я их использую.
We have no beginning, we have no end. We are infinite.
Спасибо сказали: