Hi Arjen, > > right, my Fortran compiler is usually gfortran or g95 - g77 is a very > old compiler that is no longer actively maintained. I can imagine > that the compiler does not produce import libraries - shared libraries > under Windows simply have too many pecularities, so they are probably > beyond g77's capabilities. dlltool is the way forward here.
What I don't understand is, why it works for you (gfortran), since with MinGW 4.3.2 and gfortran 4.3.2 I have the same problems (no import library). In the CMakeLists.txt (for both f77 and f95) we add a .def file if(WIN32 AND BUILD_SHARED_LIBS AND NOT MINGW) SET(plplotf95${LIB_TAG}_LIB_SRCS ${plplotf95${LIB_TAG}_LIB_SRCS} plplotf95.def) endif(WIN32 AND BUILD_SHARED_LIBS AND NOT MINGW) What is cmake supposed to do with this file? If you add the .def file, does CMake automatically create a import library? For which compiler? If I do this for the MinGW compiler no import library is created. I understand that Fortran doesn't provide this dllimport/dllexport keywords and you need to create the import library later. But does that work for other compilers? And why does it work for you? If there is a case where it works for gfortran we need to alter the cmake files. In the moment it works for my compiler toolset (MinGW/g77 and MinGW/ gfortran), but we should test that for other combinations as well. Thanks, Werner > > As to x23f: the trim() function is not a FORTRAN 77 function. It was > introduced in Fortran 90. (This does not show up when you use an F90 > compiler - sigh) > > I will look into this one. > > Regards, > > Arjen > > On 2009-03-19 22:08, Werner Smekal wrote: >> Hi Arjen, >>>> >>> Well, the cause of the problem is clear now: when linking the >>> Fortran >>> bindings >>> into a DLL, gfortran would need the option -Wl,-out-implib,... (or >>> something >>> similar) to produce the missing library. >>> >>> This option _is_ present in the gcc part to create the DLL >>> libplplotf77cd.dll. >> I revisited this problem, since it still exists and wanted at least >> to >> make it work. >>> >>> I checked to see if I could easily add it, but I have not found a >>> specific CMake >>> module for gfortran under Windows. >> I tried to change the Windows-g77.cmake module but was not >> successful in >> adding this -Wl,-out-implib - I think this is maybe not possible, >> since >> there is no Fortran statement to export a symbol. I tried to add >> a .def >> file, but also no success. >>> >>> So my question now is: Should I go ahead and add such module for >>> this >>> particular >>> combination (as part of general modules) or add it to the >>> CMakeLists.txt file as >>> a special case. Or is there another way I should proceed? >>> >>> More details on the platform: >>> - I am running CMake in an ordinary DOS-box under Windows XP. >>> - I make sure that gcc and gfortran are in the path, so that CMake >>> will pick up >>> these compilers. >>> - I use the "MinGW Makefiles" output option to generate the >>> makefiles. >>> >>> (This differs from the situation where I run CMake via MSYS. MSYS >>> and >>> MinGW are explicitly distinguished in the CMake modules, but I am >>> not >>> sure how the above situation is characterised) >> I added now a custom post-build target, which runs dlltool to >> create the >> import library. Works great so far. Arjen, could you test that. Only >> implemented for f77 so far, f95 would be straight forward. If we >> manage >> to improve the cmake files we can remove it again. >> >> Example 23 doesn't compile now. I get the following message: >> >> [ 77%] Building Fortran object examples/f77/CMakeFiles/x23f.dir/ >> x23f.f.obj >> Z:\DevZone\PLdev\build\gcc\debug\examples\f77\x23f.f: In program >> `x23f': >> Z:\DevZone\PLdev\build\gcc\debug\examples\f77\x23f.f:320: warning: >> & trim(family(ifamily+1))//' '//trim(style(istyle+1))//' >> '// >> ^ >> Reference to unimplemented intrinsic `TRIM' at (^) (assumed EXTERNAL) >> Z:\DevZone\PLdev\build\gcc\debug\examples\f77\x23f.f:320: >> & trim(family(ifamily+1))//' '//trim(style(istyle+1))//' >> '// >> ^ >> Invalid declaration of or reference to symbol `trim' at (^) >> [initially >> seen at (^)] >> mingw32-make[2]: *** [examples/f77/CMakeFiles/x23f.dir/x23f.f.obj] >> Error 1 >> mingw32-make[1]: *** [examples/f77/CMakeFiles/x23f.dir/all] Error 2 >> mingw32-make: *** [all] Error 2 >> >> My Fortran knowledge is not very exhaustive. Any ideas? >> >> Best Regards, >> Werner >>> >>> Regards, >>> >>> Arjen >>> >>> ------------------------------------------------------------------------ >>> >>> ------------------------------------------------------------------------- >>> 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 >>> >> >> > > > Delft Hydraulics, GeoDelft, the Subsurface and Groundwater unit of > TNO and parts of Rijkswaterstaat have joined forces in a new > independent institute for delta technology, Deltares. Deltares > combines knowledge and experience in the field of water, soil and > the subsurface. We provide innovative solutions to make living in > deltas, coastal areas and river basins safe, clean and sustainable. > > > > DISCLAIMER: This message is intended exclusively for the > addressee(s) and may contain confidential and privileged > information. If you are not the intended recipient please notify the > sender immediately and destroy this message. Unauthorized use, > disclosure or copying of this message is strictly prohibited. > The foundation 'Stichting Deltares', which has its seat at Delft, > The Netherlands, Commercial Registration Number 41146461, is not > liable in any way whatsoever for consequences and/or damages > resulting from the improper, incomplete and untimely dispatch, > receipt and/or content of this e-mail. > > > > > > ------------------------------------------------------------------------------ > Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) > are > powering Web 2.0 with engaging, cross-platform capabilities. Quickly > and > easily build your RIAs with Flex Builder, the Eclipse(TM)based > development > software that enables intelligent coding and step-through debugging. > Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com > _______________________________________________ > Plplot-devel mailing list > Plplot-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/plplot-devel -- Dr. Werner Smekal Institut fuer Allgemeine Physik Technische Universitaet Wien Wiedner Hauptstr 8-10 A-1040 Wien Austria email: sme...@iap.tuwien.ac.at web: http://www.iap.tuwien.ac.at/~smekal phone: +43-(0)1-58801-13463 (office), +43-(0)1-58801-13469 (laboratory) fax: +43-(0)1-58801-13499 ------------------------------------------------------------------------------ Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are powering Web 2.0 with engaging, cross-platform capabilities. Quickly and easily build your RIAs with Flex Builder, the Eclipse(TM)based development software that enables intelligent coding and step-through debugging. Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel