Я некоторое время работал с библиотекой с открытым исходным кодом («fast artificial neural network»). Я использую его источник в моей статической библиотеке. Однако, когда я его компилирую, я получаю сотни предупреждений компоновщика, которые, вероятно, вызваны тем фактом, что библиотека включает в себя файлы * .c в других файлах * .c (поскольку я включаю только некоторые заголовки, которые мне нужны, и я не касался код самого lib).Любые веские причины для #include источника (* .c * .cpp) файлов?
Мой вопрос: Есть ли веская причина, по которой разработчики библиотеки использовали этот подход, который сильно обескуражен? (Или, по крайней мере, мне рассказали всю жизнь, что это плохо и по собственному опыту я считаю, что это плохо). Или это просто плохой дизайн, и нет никакого выигрыша в этом подходе?
Я знаю this related question, но это не отвечает на мой вопрос. Я ищу причины, которые могут это оправдать.
Вопрос о бонусе: есть ли способ исправить это, не слишком сильно касаясь библиотечного кода? У меня много работы, и я не хочу создавать больше;)
Являются ли ошибки компоновщика причиной вызова функций в статической библиотеке? Возможно, вам захочется проверить, существует ли общий заголовочный файл для включения приложений. В противном случае статическая библиотека может вообще не оказаться полезной. –