Мне нужно скомпоновать две библиотеки, скажем, A и B. Некоторые файлы являются общими в обеих библиотеках. Итак, я объявляю функции в библиотеке A внутри пространства имен, скажем, abc. Итак, в A и B функция func выглядит следующим образом:
[ in A]
namespace abc {
extern "C" void func();
}
[in B]
extern "C" void func();
При сборке проекта компилятор выдает ошибки компоновки, говорящие о нескольких определениях функции func. Разве функция не работает в A внутри пространства имен или есть какая-то проблема с внешними функциями «C». Если есть, то как я могу отличить их обоих?