Я делаю разделяемую библиотеку, и ее функции оставались неопределенными во время компоновки при сборке (и при связывании с тестовой программой), и теперь я изучил искажение имен и почему это может вызвать что-то подобное.
Я предполагаю, что в заголовке libfoo.h я бы поставил:
#ifdef __cplusplus
extern "C" {
#endif
int foobar();
#ifdef __cplusplus
}
#endif
И будут ли внешние элементы для прототипов быть всем, что мне нужно для их применения, или мне нужно будет обернуть их вокруг объявлений функций в libfoo.c, чтобы моя программа на C ++ могла их читать?
Обновление для комментария ниже:
Ошибка компоновки:
g++ prototypes.cxx -L/usr/lib/ -lfoo
/tmp/ccKQmen4.o: In function `main':
prototypes.cxx:(.text+0x19): undefined reference to `foobar()'
collect2: ld returned 1 exit status