need imsl install help

need imsl install help

I have just installed VS2012, IVF composer 2013 with IMSL.  I installed the huge download for IVF and another one for IMSL.  I am trying to compile a project someone gave me made with VS2008 and IVF version 10 something.

I can compile and run a small hello world program without IMSL.

$(FNL_DIR) seems to not work in the include and lib settings of VS.  When I put the full path names in, then I can compile, but then I get hundreds of linker errors.  What did I do wrong?

I followed the instructions in the Installing and Using IMSL Libraries document.

Thanks,

Brian

Austin, TX

 

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

We need the following information to help you:

1. Click Start. In the Search box, type cmd.exe  When that appears in the search results, click it.  In the window that opens, type:

set fnl

and paste the output into a reply here.

2. In Visual Studio, go to Tools > Options > Intel Composer XE > Visual Fortran > Compilers. Click the ... butrton to the right of Include Files, copy and paste the contents here. Do the same for Library FIles.

3. Attach a ZIP of the buildlog.htm from the failed build.

Steve - Intel Developer Support

What you are missing, probably, is a reference to the IMSL libraries in your project configuration. You have specified the directories where to look for any include and library files. The source code has include directives and/or USE statements that specify which IMSL routines to use. What is missing (according to my conjecture) is a specification to the linker of which libraries to search for the object code of the IMSL routines needed.

Thanks for the replies, Steve and mecej4,

I think I have specified the INCLUDE directories correctly by doing so verbatim since $(FNL_DIR) would not work.  The project does compile ok, so it must have been able to include the IMSL modules.  My problems are with linking.

I won't have access to the development computer until Monday.  I have also just found out that since I am doing a DEBUG build, I might need to put LIBCMTD in the some ignore libaries thing.  (I wish I knew why you have to tell the linker to ingnore anything).

Is there a list of "things to do" when migrating from VS2008+IVF10 to today's VS+IVF versions?  This project (which is fairly sizable), compiles and links fine for someone else on another computer with the older versions.  The computer I am using is a freshly built Windows 7 system.  IVF is also knew to me.  My prior experience is with Powerstation and CVF.

Thanks,

Brian

To add to what I said before: yes, your deficiencies are in the linking step. When building code to be linked with IMSL from a command window, one may use environment variables starting with LINK_F.. such as LINK_FNL_SHARED, which expand to a list of IMSL libraries to link with. Alternatively, IFort supports the /Qimsl option for the same purpose. In VS, check if the linker command line includes these IMSL llibraries. If not, make the necessary changes to the configuration.

I can now link and debug successfully.  Two changes got it working.  These are:

Fortran:         Language -> Process OpenMP Drectives   set it to Generate Parallel Code      

Libraries -> Run Time Libraries           For Debug: set it to Multithreaded DLL

I checked the Project/Properties/Linker/Command Line thing to see if IMSL or FNL is there anywhere, and they're not !? Does this mean that something is not right?  Here is what is there (note: I shortened path names in two places):

/OUT:"Debug/XLTRC2.exe"

/INCREMENTAL:NO

/NOLOGO

/NODEFAULTLIB:"libc.lib"

/NODEFAULTLIB:"libcmtd.lib"

/MANIFEST

/MANIFESTFILE:"C:\CODES\XLTRC2\Debug\XLTRC2.exe.intermediate.manifest"

/MANIFESTUAC:"level='asInvoker' uiAccess='false'"

/DEBUG

/PDB:"Debug/XLTRC2.pdb"

/SUBSYSTEM:CONSOLE

/STACK:500000000

/IMPLIB:"C:\CODES\XLTRC2\Debug\XLTRC2.lib"

 

You won't see any mention of IMSL there. The environment in which the linker runs has the FNL folder added to the LIB environment variable, and library names are in directives embedded in the object file.

If you needed to add OpenMP then you missed the instruction to add:

!DEC$ OBJCOMMENT LIB:'libiomp5md.lib'

If you specify that you are linking to the IMSL DLL libraries, you don't need this.

Steve - Intel Developer Support

Leave a Comment

Please sign in to add a comment. Not a member? Join today