From: Alan W. I. <ir...@be...> - 2008-09-10 16:22:41
|
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. software@raven> 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 __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); PLplot scientific plotting software package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ |