Arjen Markus <[EMAIL PROTECTED]> writes: > Jim Dishaw wrote: > > we will apply the patch asap, but could you explain a bit about the various > versions of the libraries you are able to build with the change in compiler > options? (Intel Fortran is relatively new to me - at work we are switching > to this compiler, but it comes with a bunch of new/different options and > a different IDE than the old and more familiar Compaq Visual Fortran > compiler and at the moment I have little experience with IVF). >
The various libraries that one can link with is not just an Intel Fortran feature--Visual Studio does it also. There are six libraries that you can link with Name VC++ IF Description MSVCRT.LIB /MD /libs:dll /threads DLL library, thread-safe LIBC.LIB /ML /libs:static Static library, non-thread safe LIBCMT.LIB /MT /libs:static /threads Static library, thread safe and the debug versions MSVCRTD.LIB /MDd /libs:dll /threads /dbglibs LIBCD.LIB /MLd /libs:static /dbglibs LIBCMTD.LIB /MTd /libs:static /threads /dbglibs Intel Fortran permits just "/libs:dll," which they describe as "single-threaded dynamic library" that links with MSCVRT.LIB and the single-threaded fortran library. The switches also have other impacts in automatically defining some constants VC++ Defines /MD _MT _DLL /ML /MT _MT /MDd _DEBUG _MT _DLL /MLd _DEBUG /MTd _DEBUG _MT If the various components do not have a consistent library type, then you will get errors in the link phase because of name collision. For example, I am not able to build the examples in Plplot when building a static thread safe version of Plplot because I cannot figure out how to override the compiler flags. Of course, one probably does not want to build six different versions of their library. If you specify the VC++ /Zl compiler option, the compiler will omit the default library name from the object file. Unless there is a good reason not to (for example you know, or are uncertain, that your code is not thread safe you may want to force linking with the LIBC.LIB library), libraries should be created with object files that have the /Zl option specified at compile time. I think, for Plplot, we should provide a simply way of specifying the runtime library, with a default setting of "/MD" (and "/MDd" for the debug version) so as not to break applications. If one wants to build a generic library, then the "/Zl" option could be added at the cmake command line. The Intel Fortran is actually an updated version of the Compaq Visual Fortran. Intel bought it from HP/Compaq and got the developers--many of who were with developing it when it was Digital Fortran. I found the transition to be mostly painless. The only problem I had was when I migrated a CVF project. The migration process sets the /iface:cvf compiler option (I don't know if this is the current behavior), which specifies the calling convention in the Intel compiler. CVF uses a different convention than the default, which will cause link errors if you mix CVF and projects using the default. ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys-and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ Plplot-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/plplot-devel
