Решение проблемы компоновщика с явным созданием экземпляра объекта ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Решение проблемы компоновщика с явным созданием экземпляра объекта

Сообщение Anonymous »

У меня довольно сложный проект на базе C++14 cmake, подготовить минимальный полный проверяемый пример не так-то просто. Используя boost 1.73, я обнаружил проблему с связыванием на этапе выполнения в Ubuntu 22.04/23.04. В частности, ldd возвращает что-то вроде этого:

Код: Выделить всё

libboost_regex.so.1.73.0 => not found
Другие библиотеки Boost (например, потоки, файловая система) расположены успешно. Я обнаружил, что могу решить проблему, явно добавив глобальный объект из библиотеки регулярных выражений, например:

Код: Выделить всё

boost::basic_regex fix_linker_issue("");
В то же время объект, созданный по умолчанию, не помогает:

Код: Выделить всё

boost::basic_regex doesnt_help;
Может кто-нибудь объяснить мне, почему это исправление работает?
В более современной версии Boost 1.84 такой проблемы нет, скорее всего, потому что библиотека регулярных выражений стала заголовком -только.

Подробнее здесь: https://stackoverflow.com/questions/790 ... tantiation

Вернуться в «C++»