Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29231 Discussions

Newly installed product on win7(64), LNK2019 errors

SERDAR_D_
Beginner
2,456 Views

Hi, we installed the product and I attempted to run a .for file. I am getting the following errors. I've submitted it to Intel tech support yesterday and have not yet gotten a response that addresses the problem -- they did indicate it will be 2 days so I guess that may be tomorrow. In the meantime, I've decided to try this forum. Does anyone happen to have a solution? Thanks.

Z:\Users\sd\for>ifort sim_r6a.for /exe:sim_r6a.exe
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Inte
l(R) 64, Version 15.0.1.148 Build 20141023
Copyright (C) 1985-2014 Intel Corporation.  All rights reserved.

Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

-out:sim_r6a.exe
-subsystem:console
sim_r6a.obj
sim_r6a.obj : error LNK2019: unresolved external symbol ISUM referenced in funct
ion MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol DLFTDS referenced in fun
ction MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol DSET referenced in funct
ion MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol RNSET referenced in func
tion MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol DRNNOF referenced in fun
ction MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol DRNMVN referenced in fun
ction MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol DCOPY referenced in func
tion MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol DSUM referenced in funct
ion UNPACK
sim_r6a.obj : error LNK2019: unresolved external symbol DSCAL referenced in func
tion LCK
sim_r6a.obj : error LNK2019: unresolved external symbol DDOT referenced in funct
ion LCK
sim_r6a.obj : error LNK2019: unresolved external symbol DEVASF referenced in fun
ction LCK1
sim_r6a.obj : error LNK2019: unresolved external symbol DMURRV referenced in fun
ction EQNB
sim_r6a.obj : error LNK2019: unresolved external symbol DLSLRG referenced in fun
ction EQNB
sim_r6a.obj : error LNK2019: unresolved external symbol DWRRRN referenced in fun
ction RWMOD
sim_r6a.exe : fatal error LNK1120: 14 unresolved externals

0 Kudos
22 Replies
mecej4
Honored Contributor III
2,104 Views

I hope that you installed both IMSL and MKL in addition to the IFort compiler, because the undefined references are to be resolved from libraries contained in those packages.

Use the build command 

     ifort /Qimsl /Qmkl sim_r6a.for

If that does not work, there are other options that we can try. It would also help if you told us how you used to build this application with your older installation.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

Thanks mecej4. The command you suggested reduces the number of errors but does not eliminate all; see below. This is a "legacy" code, I did not build it.

Z:\Users\sd\for>ifort /Qimsl /Qmkl sim_r6a.for
Intel(R) Visual Fortran Intel(R) 64 Compiler XE for applications running on Inte
l(R) 64, Version 15.0.1.148 Build 20141023
Copyright (C) 1985-2014 Intel Corporation.  All rights reserved.

Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

-out:sim_r6a.exe
-subsystem:console
"-libpath:C:\Program Files (x86)\Intel\Composer XE 2015\mkl\lib\intel64"
-libpath:C:\PROGRA~2\Intel\COMPOS~1\imsl\intel64\lib
sim_r6a.obj
sim_r6a.obj : error LNK2019: unresolved external symbol ISUM referenced in funct
ion MAIN__
sim_r6a.obj : error LNK2019: unresolved external symbol DSET referenced in funct
ion MAIN__
imsl.lib(de6csf.obj) : error LNK2001: unresolved external symbol DSET
imslhpc_l.lib(dl2crg.obj) : error LNK2001: unresolved external symbol DSET
sim_r6a.obj : error LNK2019: unresolved external symbol DSUM referenced in funct
ion UNPACK
imslhpc_l.lib(dnr1rr.obj) : error LNK2019: unresolved external symbol IDMAX refe
renced in function DNR1RR
sim_r6a.exe : fatal error LNK1120: 4 unresolved externals

0 Kudos
mecej4
Honored Contributor III
2,104 Views

Add "imslblas_vendor.lib" (or imslblas_imsl.lib) at the end of the command that I gave in #2. Once the linker errors are taken care of, you may need to tweak the choice of libraries used to improve performance, since I notice that one of the HPC libraries is being used.

0 Kudos
Steven_L_Intel1
Employee
2,104 Views

Argh - /Qimsl should not be adding that nonexistent IMSL path to the link. I will let the developers know about this. The additions mecej4 suggested won't help. Instead, add at the end: %LINK_F90%

Do you have IMSL installed? Does C:\Program Files (x86)\VNI\imsl\fnl701\Intel64\lib exist?

 

0 Kudos
Steven_L_Intel1
Employee
2,104 Views

I saw the email you sent to Intel Developer Zone support - this made its way into our tech support system, Intel Premier Support. In the future, if you want product support go through https://premier.intel.com/

We can handle your problem here in the forum so I've closed the issue in our tracking system.

I see that you have a license for the product with IMSL but did you install IMSL, which is a separate install? Please follow the instructions in Configuring Visual Studio for using the IMSL* Fortran Numerical Library to make sure you have access to the libraries.

0 Kudos
mecej4
Honored Contributor III
2,104 Views

Steve, he probably has some version of IMSL installed and configured to work with IFort, since adding /Qimsl removed some of the previously unresolved references (e.g., DLSLRG). He is working at the command line, as well, and I thought of suggesting that he use %LINK_FNL_STATIC% or one of the other linker options in that group.

0 Kudos
Steven_L_Intel1
Employee
2,104 Views

Either adding %LINK_FNL% or adding one of the 'link_fnl_xxx.h' include files, would probably help. But I'm not sure if he even has IMSL installed.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

Thanks, Steve Lionel. Thanks, mecej4. I installed w_fcompxe_2015.1.148.exe and w_fcompxe_imsl_2013_sp1.0.024.exe. Does this answer the question re IMSL?

0 Kudos
SERDAR_D_
Beginner
2,104 Views

"ifort /Qimsl /Qmkl one.for imslblas_vendor.lib" does not produce any LNK errors and produces an .exe file. I suppose it means that this command is sufficient for successful compilation.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

And "C:\Program Files (x86)\VNI\imsl\fnl701\Intel64\lib" does exist.

0 Kudos
Steven_L_Intel1
Employee
2,104 Views

Instead of "imslblas_vendor.lib" use "%LINK_FNL%" (without the quotes). This is how you link in IMSL from the command line.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

When I replace imslblas_vendor.lib with %LINK_FNL%, the program compiles and and an .exe file is created. Except it's much smaller than the exe file that the imslblas_vendor.lib had created (about one-eights of the previous size). Moreover, when I click on the new exe file I get the dialog box "The program can't start because mkl_intel_thread.dll is missing from your computer. Try reinstalling the program to fix this problem." This error did not come up for the exe file created by imslblas_vendor.lib. Not sure why this is happening and what to do next.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

I've rechecked the relative file sizes; the new exe file is about 1% of the previous one.

0 Kudos
Steven_L_Intel1
Employee
2,104 Views

It's because in IMSL 7, the default is to link to the IMSL DLL library. This in turn requires that the compiler and MKL redistributables be installed and in PATH. By default, MKL isn't in PATH so you would have to add it.  If you want to go back to static libraries, use %LINK_FNL_STATIC% instead.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

And when I go back to imslblas_vendor.lib the program still compiles and the exe file is "running" (in the sense that it's listed on windows Task Manager). It's taking a long time to run, but that may be expected because of the nature of the task.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

I'm out of my depth here, but isn't the Intel Command Window/Line supposed to add the correct path? I'm pretty sure I read that somewhere.

0 Kudos
Steven_L_Intel1
Employee
2,104 Views

It adds the path to where the libraries are. It can't add the names of the libraries, which is what the %LINK_FNL% does. Or you can use one of the provided include files.

0 Kudos
SERDAR_D_
Beginner
2,104 Views

Based on appearances (i.e. what I see on the monitor) %LINK_FNL_STATIC% gets me to the same place as  imslblas_vendor.lib -- it gives me an exe file identically sized as before, and it is displayed as a process on the task manager. Thanks.

0 Kudos
mecej4
Honored Contributor III
2,104 Views

It is typical that, when a DLL library is linked against, the resulting EXE is smaller because the code for the library routines (IMSL, MKL, etc.) now resides in the DLLs rather than in the EXE.

That DLL (mkl_intel_thread.dll) should be in C:\Program Files (x86)\Intel\Composer XE 2015\redist\intel64\mkl, and that directory should be included in PATH when you are using a command window configured for IFort+IMSL.

0 Kudos
SERDAR_D_
Beginner
1,963 Views

Thanks mecej4; when you write "should be included," do you mean as in "go ahead and manually include" or rather "it is designed to be there so you don't need to manually include"?

0 Kudos
Reply