Некоторые платформы и компиляторы не обеспечивают всю необходимую функциональность, чтобы иметь полностью функциональный Boost. ДЛЛ. Такие компиляторы упоминаются в этом разделе вместе с возможными обходными путями для этих ограничений.
Некоторые версии Android,<MinGW>и<ld>на платформе Windows не могут смешивать атрибуты<__dllexport__>и<weak>. Это приводит нас к ситуации, когда мы должны четко указать единицу перевода, в которой<BOOST_DLL_ALIAS>инстанцируется, делая все другие<BOOST_DLL_ALIAS>заявления с этим псевдонимом переменной<extern>.
Вы можете явно отключить экспорт слабых символов, используя<BOOST_DLL_FORCE_NO_WEAK_EXPORTS>. Это может быть полезно для работы с проблемами линкера или для тестирования вашей программы на совместимость с линкерами, которые не поддерживают экспорт слабых символов.
Некоторые платформы игнорируют атрибуты раздела, поэтому запрос символов в указанном разделе с использованием<boost::dll::library_info>может ничего не вернуть.
На некоторых платформах<dlopen>,<dlclose>и некоторых других функциях предполагается, что они не будут называться одновременно.
Платформы, которые имеют эту проблему, являются FreeBSD, MacOS, iOS.
Платформы, которые не имеют такой проблемы, - это Windows, Linux+glibc, Android, QNX.
Другие платформы находятся под вопросом. Если вы используете одну из не перечисленных платформ (например, Linux+busybox), вы можете запустить тест<shared_library_concurrent_load_test>для обнаружения проблемы:
Если функция определена внутри классового определения, она может быть интерпретирована как всегда встроенная, что может привести к тому, что функция вообще не экспортируется. Однако это отличается между компиляторами.
Статья Limitations раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 11. Boost.DLL может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.