Есть библиотека написанная на Си. Я хочу сделать для нее враппер. Вначале попытался написать простой пример и скомпилировать его 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 - компилируются и линкуется без ошибок.
Проблемы совмещения Си библиотек в С++ (conflicts with new declaration with C linkage)
Модератор: Модераторы разделов
-
Electronix
- Сообщения: 53
- ОС: Slackware, Suse, XP
Проблемы совмещения Си библиотек в С++
We have no beginning, we have no end. We are infinite.
-
CycaHuH
- Сообщения: 85
- ОС: FreeBSD; Archlinux; Calculate
Re: Проблемы совмещения Си библиотек в С++
А можно код?
-
Electronix
- Сообщения: 53
- ОС: Slackware, Suse, XP
Re: Проблемы совмещения Си библиотек в С++
Код не могу. Могу приблизительно :
clib.h - хедер файл библиотеки. clibfunca, clibfuncb - ее фунцкии.
Код: Выделить всё
#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: Проблемы совмещения Си библиотек в С++
Проблему решил.
Просто нужно было в самой библиотеке (clib.h) сделать их extern (с помощью ifdef __cplusplus), а не в исходнике, в котором я их использую.
Просто нужно было в самой библиотеке (clib.h) сделать их extern (с помощью ifdef __cplusplus), а не в исходнике, в котором я их использую.
We have no beginning, we have no end. We are infinite.