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

Error while building IMSL routine on IVF (Prof Edition)

dipanjan
Beginner
757 Views

I have a CVF project that I want to port to IVF 9.1 Prof Edition (Visual Studio IDE).

My host is a 64-bit 4Xeon coresystem. Followed the steps given in the white paper "Porting CVF to IVF" by Steve. Added the EM64T paths in the "Libraries" and "Includes" of the Tools->Options->Intel Fortran. In main file, used INCLUDE 'link_f90_static.h' (not sure whether this is right) but, the options given in the Helpfile none correspond to a 64-bit. multiprocessor system (Options listed below)

Tried to replace USE IMSL part of earlier CVF code with USE Numerical_Libraries. This is the error that I get:

Error1 Error: This module file was generated for a different platform or by an incompatible compiler or compiler release. It cannot be read. [NUMERICAL_LIBRARIES]

-Kindly Help.

----------------------

INCLUDE options given in the Helpfile

  • INCLUDE 'link_f90_static.h'(To use the single-processor, static library form of the libraries)

  • INCLUDE 'link_f90_dll.h' (To use the single-processor, dynamic link library form of the libraries)

  • INCLUDE 'link_f90_static_smp.h'(To use the multiprocessor, static library form of the libraries; the DLL form of the Intel MKL will always be used. Multiprocessor libraries are supported on IA-32 and Intel Itanium-based systems only)

  • INCLUDE 'link_f90_dll_smp.h'(To use the multiprocessor, dynamic link library form of the libraries; multiprocessor libraries are supported on IA-32 and Intel Itanium-based systems only)

0 Kudos
7 Replies
Steven_L_Intel1
Employee
757 Views
The INCLUDE line is right. It sounds to me, though, that the path that the compiler uses to look for INCLUDE files and compiled MODULE files is pointing to the IA-32 version. Go to Tools..Options..Intel Fortran..General. Make sure that the target platform is "x64" and then look in the Includes list to make sure that it has the path to the IMSL "EM64T" include folder and not any other.
0 Kudos
dipanjan
Beginner
757 Views

It was already targeted to an x64 platform. I double-checked. Same result. I still get the error -

Error1 Error: This module file was generated for a different platform or by an incompatible compiler or compiler release. It cannot be read. [NUMERICAL_LIBRARIES]

0 Kudos
Steven_L_Intel1
Employee
757 Views

Check again. The compiler is being told to look at the folder for the wrong platform. Is the target platform for your solution x64 or Win32? Look at the Preprocessor property page for the project to see if something else is specified.

0 Kudos
dipanjan
Beginner
757 Views

Thanks - I checked the project Properties. On changing it from Win32 to x64, the compilation errors are gone - but I still get -

Error1 fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'X86'SOI_MOSFET_SC_MAIN

When I installed it, all the installations automatically chosethe "Program Files (x86)" directory. Do I need to alter/check some more configuration/settings.

Thanks

-Dipanjan.

0 Kudos
Steven_L_Intel1
Employee
757 Views

The installation folder is correct. Either Visual Studio is finding the 32-bit linker or you have the machine type set explicitly as X86 in your linker properties. Go to the Linker property page, Command Line tab, and look to see what options it is using.

Did you use the configuration manager to change the project type to x64? This is explained in the on-disk documentation in the chapter on using Visual Studio.

0 Kudos
dipanjan
Beginner
757 Views

Steve,

as you said, the Command Line Tab in the linker Properties did have this line -

"/MACHINE:I386".

I removed it, and the build was successful. Thanks.

I had changed the project type to x64, by right clicking on theproject, and opening the Configuration Manger (though not reading the on-disk documentation before).

Imminent problem being solved, I would like to ask you something on a side note. I have couple of workstations where CVF is installed, which I used to develop and run my work. A new 64-bit dual core Intel workstation did not allow installation of CVF, which is why I got the IVF (prof edition because I use IMSL). The question is: since I am used to CVF IDE, and still have couple of machines where Ican run CVF executables, should I be doing the development in CVF, and just convert the projects in IVF before running them on this new Intel machine. I think this is an easy way, not necessarily the best. So wanted an opinion on this.

Thanks for the help.

0 Kudos
Steven_L_Intel1
Employee
757 Views
My advice would be to dig in and get used to the newer VS environment. It really won't take long if you don't switch back and forth.
0 Kudos
Reply