------- Comment #20 from a14331990 at hotmail dot com 2010-05-15 13:24 ------- (In reply to comment #19) > Should not the options -fvisibility-inlines-hidden or -fvisibility=hidden fix > this problem? Option found on http://gcc.gnu.org/wiki/Visibility. > Note: The MinGW GCC 4.5.0-1 does not make smaller DLLs using above options. > > > >
I don't think these option can undo the change by nathan at 2009-05-22 ------------------------------------------------------------------------ r147799 | nathan | 2009-05-22 22:57:15 +0800 (Fri, 22 May 2009) | 16 lines gcc/ * tree.c (handle_dll_attribute): Mark dllexport'd inlines as non-external. gcc/cp * decl2.c (decl_needed_p): Consider dllexport'd functions needed. * semantics.c (expand_or_defer_fn): Similarly. gcc/testsuite/ * gcc.dg/dll-6.c: New test. * gcc.dg/dll-6a.c: Likewise. * gcc.dg/dll-7.c: Likewise. * gcc.dg/dll-7a.c: Likewise. * g++.dg/ext/dllexport2.C: Likewise. * g++.dg/ext/dllexport2a.cc: Likewise. ------------------------------------------------------------------------ BTW, say SORRY to nathan, your change is indeed useful for building libstdc++ dll, but I have found an alternative approach. Indeed, the explanation page http://gcc.gnu.org/wiki/Visibility says "How to use the new C++ visibility support In your header files, wherever you want an interface or API made public outside the current DSO, place __attribute__((visibility("default"))) in struct, class and function declarations you wish to make public (it's easier if you define a macro as this). You don't need to specify it in the definition. Then, alter your make system to pass -fvisibility=hidden to each call of GCC compiling a source file.", this means to use these options, you should alter your header files first, but wxwidgets source code apparently don't contain anything like "__attribute__((visibility("default")))". Correct me if I'm wrong. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43601