Hi laurent: On 2015-03-18 03:56+0100 laurent Berger wrote:
[out of order] > With a no shared lib and with Windows 7-64 bits and MSVC 2012 Win64 bits: > //Build shared libraries > BUILD_SHARED_LIBS:BOOL=OFF > there is no error That good result makes sense because BUILD_SHARED_LIBS:BOOL=OFF means the static form of PLplot libraries is built where symbol visibility (e.g., whether plsc is externally accessible from the library) should not be an issue. However, if you are willing to help more with testing the MSVC 2012 Win64 bits shared libraries case until you are satisfied with it, then please read on.... > Now I forget MSVC 2013 > My cmake version is 3.1.2. See remarks below about CMake version. Also, could you let us know what CMake generator you are using? (Sorry, I forgot to ask for this key information before.) > I have build all versions DEBUG MinSizeRel Release RelWithDebInfo with > Windows 7-64 bits and MSVC 2012 Win64 bits > I have build too with Windows 7-64 bits but with MSVC 2012-32bits > CMakeCache.txt is > ******* > //Build shared libraries > BUILD_SHARED_LIBS:BOOL=ON > > Always results is >> test_plbuf.obj : error LNK2001: unresolved external _plsc > 1>F:\Lib\test\plplot-plplot\build2012-32\examples\c\RelWithDebInfo\test_plbuf.exe > > : fatal error LNK1120: 1 externes non résolus > Note the whole point of the USINGDLL macro for the shared library case is to sort out symbol visibility issues when the PLplot libraries are being built so because USINGDLL was not set my hypothesis was the plsc symbol was not visible ==> build error. For your first report of results, when USINGDLL was being set (#defined) when you built shared PLplot libraries you had success. Is that still _always_ the case? @Arjen, Phil, and Jim: If on the contrary laurent replies that shared library results are sometimes bad even when USINGDLL is set by hand, then you should step in to see whether you can confirm larent's bad results on your own MSVC platforms. @Laurent: However, if you confirm that shared library results are always good if USINGDLL is set by hand, then I can still likely help you (despite my inexperience with MSVC) because one of my key PLplot responsibilities is the build system, and the issue (assuming your confirmation) boils down to convincing our build system to set that macro properly for your MSVC platform case. (Note for the Linux, Cygwin, and MinGW/MSYS cases, our build system always sets USINGDLL whenever it is needed for the shared library case, and I need that to happen for the MSVC case as well. That's why I asked you to edit src/CMakeLists.txt in the source tree to try the alternative of setting the COMPILE_DEFINITIONS property, and, of course, that test should be run _without_ setting USINGDLL by hand, and for a completely new build with no stale results left over from an old build to confuse issues. Also, other experiments you should try (since Windows support is improving all the time for CMake-3.x.y) is to try the latest bugfixed version of CMake-3.1.y which is CMake-3.1.3 (not the CMake-3.1.2 version that you are currently using) according to <http://www.cmake.org/files/v3.1/> and also the latest bugfixed version of CMake-3.2.y which is CMake-3.2.1 according to <http://www.cmake.org/files/v3.2/>. And the same remarks apply for all tests concerning not setting USINGDLL by hand, and using a fresh build for each new experiment. Note that almost all of my recent Linux testing has been for CMake-3.0.2, but just now I did a quick check that our Linux build (and the test_noninteractive test of all our file devices) worked fine for CMake-3.2.1. Therefore, there is a good chance that CMake-3.2.1 will work as well as or better than CMake-3.1.3 on Windows, but you should try both versions to see if the USINGDLL problem goes away for either. 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); the Time Ephemerides project (timeephem.sf.net); PLplot scientific plotting software package (plplot.sf.net); 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 __________________________ ------------------------------------------------------------------------------ Dive into the World of Parallel Programming The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel