Hello,
I am building a GUI application using INTEL's 64 bit fortran compiler ifort, INTEL's linker xilink and SALFORD's Dll clearwin64.dll.
If I am using clearwin64.dll and clearwin64.lib of SALFORD ftn95 version 7.10 the building process works fine and creates the executable successfully.
However, if using clearwin64.dll and clearwin64.lib of SALFORD ftn95 version 8.61 (version info of clearwin64.dll in resource monitor: 22.2.3.15, date: 03.02.2020), then INTEL's linker xilink reports the following errors (and does not create the executable expected):
LIBCMT.lib(memcpy.obj) : error LNK2005: memmove already defined in clearwin64.lib(clearwin64.dll)
LIBCMT.lib(crt0dat.obj) : error LNK2005: exit already defined in clearwin64.lib(clearwin64.dll)
LIBCMT.lib(unlink.obj) : error LNK2005: remove already defined in clearwin64.lib(clearwin64.dll)
LIBCMT.lib(getenv.obj) : error LNK2005: getenv already defined in clearwin64.lib(clearwin64.dll)
LIBCMT.lib(atox.obj) : error LNK2005: atoi already defined in clearwin64.lib(clearwin64.dll)
..\p64_intel\p0918w.exe : fatal error LNK1169: one or more multiply defined symbols found
. I could force xilink to ignore this (via option '/FORCE:MULTIPLE') and thus I could create the executable in question (named p0918w.exe). But I am unsure about possible side effects and hence would like to know more about the errors/warnings. I used commmand
dumpbin /EXPORTS clearwin64.dll
to observe that e.g. symbol exit is exported by clearwin64.dll version 8.61, but **not **by clearwin64.dll version 7.10. I wonder why this is the case.
Please note: clearwin64.lib is the import library supplied by SALFORD and needed for the build process using INTEL's ifort. Moreover, all the module files (and corresponding objects) needed for building have **not **been suppied by SALFORD and have been built by me using ifort and the module sources supplied by SALFORD in directory
FTN95\source64
of the ftn95 installation in question ( i.e. version 7.10 or version 8.61).
LIBCMT.lib is a C Link Library used (mt stands for multithreaded) and I suspect that it is used because the GUI application is built from Fortran and C/C++ sources.
Any comment is welcome.
Regards, Dietmar