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

Intel Visual Fortran and IMSL Numerical Libraries

Peter_F_5
Beginner
559 Views

Hi there, I am trying to run a Fortran code that requires the use of IMSL Numberical Libraries. 

I have installed Visual Studio 2013, Intel Parallel Studio XE 2015 and Fortran Numerical Library 7.1.0.

When I run the code I get the error:

I get the error: error #7002: Error in opening the compiled module file.  Check INCLUDE paths.   [NUMERICAL_LIBRARIES]    

After searching a bit on this forum, I went to Tools -> Intel Compilers and Tools -> Visual Fortran -> Compilers and did the following:

  • At the right of Libraries., clicked the "..." button.
  • Added to the end of the list,
    $(FNL_DIR)\Intel64\lib 
  • At the right of Includes, clicked the "..." button.
  • Added to the end of the list,
    $(FNL_DIR)\Intel64\include\dll ( for Intel 64 architecture target)

Still got the same error. Also tried to put INCLUDE 'link_fnl_static.h' on the source code but with no success. 

 

Edit: After changing the lines $(FNL_DIR)\Intel64\lib  and $(FNL_DIR)\Intel64\include\dll to the actual paths:

C:\Program Files (x86)\VNI\imsl\fnl710\winin140x64\lib and C:\Program Files (x86)\VNI\imsl\fnl710\winin140x64\include\dll respectively, I managed to get rid of the previous errors. But now I get some other errors: 

 

error LNK2019: unresolved external symbol DGELSY referenced in function DRLSE    drlsejg.obj    

error LNK2019: unresolved external symbol DNORDF referenced in function MOD_UTILS_mp_MARKOVAPPR    mod_utils.obj   

 error LNK2019: unresolved external symbol DPSORT referenced in function RANDOM_GEN1    random_gen1.obj     

 

 

 

0 Kudos
4 Replies
mecej4
Honored Contributor III
559 Views

You probably have two issues to fix. The first is that FNL_DIR is probably not defined in the global environment. That would explain why the compilation worked when you hard-wired the directory names in your project.

The second issue is that you have only specified the INCLUDE and LIB paths to access the libraries, but you have not told the VS build system that the IMSL libraries should be used at link time. In other words, you have told VS the "where to look" but not the "what to use".

0 Kudos
Peter_F_5
Beginner
559 Views

Indeed you are probably right.

After some search on the forum I added the lines:

include 'link_fnl_static.h'
!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

And apparently it is working. I do need to double check though. 

 

0 Kudos
mecej4
Honored Contributor III
559 Views

You probably have the 7.1 IMSL from Roguewave, but it is probably not much different in layout from the 7.0.1 version, from Intel or Roguewave. The link_fnl_static.h file simply has a number of libraries listed with OBJCOMMENT, such as !dec$ objcomment lib:'imsl.lib', etc.

Note that using the static libraries will cause your EXEs to be huge. If that is a problem, you can use INCLUDE link_fnl_shared.h  instead.

0 Kudos
Peter_F_5
Beginner
559 Views

Hi mecej4, thanks for your answer. You are again correct, I am using 7.1 IMSL (I mentioned it on the first post). After the changes the code compiles, but actually it exits when it calls the function DNORDF which if my understanding is correct, is part of the IMSL libraries. Not sure why. Maybe the libraries are still not recognized? 

 

Edit: Apparently there is a problem with the license. Let me look through it and I will update this post.

0 Kudos
Reply