Я пытаюсь добавить некоторый код в более крупный проект C, который требует использования библиотеки C ++.
Библиотека C ++ предоставляет оболочку с использованием функций, помеченных как extern "C", которые обеспечивают доступ к функциональности библиотеки
//Some C++ library
//mywrapper.h
#ifdef __cplusplus
extern "C" {
#endif
void wrapperFunction1( int width );
void wrapperFunction1( int height);
#ifdef __cplusplus
} // extern "C"
#endif
Компилируется с g ++ без проблем.
При создании программы на C и включении mywrapper.h я постоянно получаю ошибки компоновщика, ссылающиеся на vtable и cxa_pure_virtual:
undefined reference to `vtable for __cxxabiv1::__class_type_info'
undefined reference to `__cxa_pure_virtual'
При тестировании эти ошибки исчезают и позволяют программе компилироваться, когда я добавляю библиотеку stdc ++, но это не вариант для более крупного проекта C. Есть ли способ скомпилировать программу C для доступа к библиотеке C ++ без этих ошибок и без stdc ++? И дело об ошибках относится к модулям, которые находятся глубоко внутри библиотеки C ++ и на которые нет ссылок в mywrapper.h, так почему же программа C даже пытается ссылаться на них?