В нашем проекте мы решили использовать последнюю версию fmt (6.2.0) в нашем проекте и использовать в основном функциональность printf, так как у нас было ведение журнала, где мы широко используем printf.
Я построил libfmt.a в нашей коробке Linux с использованием CMakeLists.txt, включенного в пакет fmt. В моем процессе я включил каталог включения libfmt и в target_link_libraries. В коде я использовал только #include<fmt/printf.h>
. Теперь, когда я компилирую код, код компилируется, но во время компоновки я получаю ошибки: их намного больше, но следующее - первое, и я верю, что если это будет решено, остальные будут разрешены автоматически
.
*
AB 1020 * cpp :( text._ZN3fmt2V68internal8groupingIcEESsNS1_10locale_refE [_ZN3fmt2v68internal8groupingIcEESsNS1_10locale_refE] + 0х20):. неопределенный правочник для `станд :: строки FMT :: v6 :: внутренняя :: grouping_impl (FMT :: v6 :: internal :: locale_ref) '
Я провел некоторый анализ и обнаружил, что определение этой функции присутствует в format-inl.h. Я попытался включить его в свой код, но все еще оставалась проблема с линковкой.
Теперь, когда я определил макрос FMT_HEADER_ONLY в коде, линковка сработала.
Мой вопрос : Когда я связываюсь с библиотекой libfmt.a, она не может найти эту функцию. Почему? Я не хочу использовать версию только для заголовков.
Пожалуйста, дайте мне знать, как это исправить.