On Wed, Sep 10, 2008 at 09:22:48AM -0700, Alan Irwin wrote:
> On 2008-09-10 08:47+0200 Arjen Markus wrote:
> 
> >Hi Alan, Andrew,
> >
> >what may be hidden because of all the #ifdefs is that for the 
> >Windows/MSVC/(I|C)VF
> >case we do use the PLDLLEXPIMP macro, so the visibility issue _is_ taken 
> >care of.
> 
> The C++ case is pretty simple, but I cannot figure it out.  Here is what I
> get for that case.
> 
> [EMAIL PROTECTED]> grep -i dll bindings/c++/*
> bindings/c++/CMakeLists.txt:      PROPERTIES COMPILE_FLAGS "-DMAKINGPLDLL" )
> bindings/c++/CMakeLists.txt~:      PROPERTIES COMPILE_FLAGS "-DMAKINGPLDLL" 
> )
> bindings/c++/plstream.h:class PLDLLIMPEXP Coord_Xformer {
> bindings/c++/plstream.h:class PLDLLIMPEXP cxx_pltr2 : public Coord_Xformer {
> bindings/c++/plstream.h:class PLDLLIMPEXP plstream {
> 
> Are only 3 instances of PLDLLIMPEXP needed in plstream.h?  The C++ examples
> use much more of our C++ API than that.  Also, notice that libplplotd uses
> some DLL symbols and also makes others.  That is handled by PROPERTIES
> COMPILE_FLAGS "-DMAKINGPLDLL -DUSINGCSADLL -DUSINGNNDLL". Similarly,
> shouldn't libplplotcxxd be using C symbols from libplplotd and also making
> C++ symbols available? There is no difference between what attributes are
> assigned for GCC for the import and export cases, but that is not true of
> proprietary Windows compilers so I would think you would have to continue
> the distinction between USING<LIBNAME>DLL and MAKING<LIBNAME>DLL that you
> started with libplplotd in order for your logic to work correctly for
> libplplotcxxd visibility.
> 
> Once we can figure out exactly what is going on with libplplotcxx
> visibility, then we should take a similar careful look at the much more
> complex visibility question for all of our pure C and pure Fortran language
> libraries that support f77 and f95.
> 
> Also, once we are satisfied with our visibility implementation we should
> document it in special README files for each library, i.e.,
> README.CSA_VISIBILITY, README.NN_VISIBILITY, README.PL_VISIBILITY, etc., our
> docbook documentation, and the wiki.

Alan,

The plstream class is marked as PLDLLIMPEXP and this will be passed on
to all member functions, so there is only need for the one definition.
See the gcc visibility wiki for a brief explanation (at the bottom). You
need to know a little about C++ terminology to decipher it.

This case is a) handled already and b) extremely simple.

Andrew

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to