
Luke Elliott wrote:
(BTW - I just used program_options as an example as that's what I was looking at at the time...)
I don't have access to VC++ right now so this is from memory, but there are (at least) 2 cases where it raises a warning:
class MY_LIB_DECL my_class : public some_base { my_class(); };
if some_base isn't a declspeced class then you get "warning non dll-interface class used as based for dll-interface class".
I believe this sometime happen when inheriting boost::noncopyable, that has no method to begin with, right? Then it's indeed poor compiler diagnostic, and we probably can add declspec, but I don't yet understand when it should be dllexport and when dllimport :-/
class MY_LIB_DECL my_class { my_class();
std::string m_string; };
Does this happen with any boost library?
However, the warnings can be removed by exporting only members which truly need to be exported - I was just curious as to why it isn't done in boost (possibly GCC issues?).
Truly, have no idea if GCC allows visibility attribute on methods. - Volodya