2 Feb
2021
2 Feb
'21
12:34 p.m.
On 02/02/2021 11:51, Andrey Semashev via Boost wrote:
So, the bottom line, BOOST_PROGRAM_OPTIONS_DECL must be defined to:
- BOOST_SYMBOL_EXPORT - on Windows, when the library is being built; - BOOST_SYMBOL_IMPORT - on Windows, when the library is being consumed by user; - BOOST_SYMBOL_VISIBLE - in any other case.
This causes Boost.ProgramOptions symbols to be exported in any shared object or executable which links in Boost.ProgramOptions i.e. you reexport the same symbols. So, as I already said, don't do that. Only symbols whose typeinfos need to be seen during RTTI lookup should always be BOOST_SYMBOL_VISIBLE. That is generally types thrown as exceptions, and anything else subject to dynamic_cast. Niall