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

GETFILEINFOQQ in 64 bit Fortran

Chris_G_2
Beginner
1,157 Views

I am using the Visual Fortran Compiler XE 15.0.0.070 running under Windows 7.

My program compiles and links correctly in 32 bit mode, but in 64 bit mode I get

error #6284: There is no matching specific function for this generic function reference.   [GETFILEINFOQQ]

I am also using the Math Kernel Library with the option /Qmkl:parallel. I get the following error messages associated with this:

ifort: command line warning #10159: invalid argument for option '/Qmkl'

The compiler command line is:

/nologo /O3 /Qopt-prefetch=2 /assume:buffered_io /Qip /Qopt-matmul /module:"x64\Release\\" /object:"x64\Release\\" /Fd"x64\Release\vc100.pdb" /check:none /libs:dll /threads /Qmkl:parallel /c

The linker command line is:

/OUT:"x64\Release\SquallDll1.dll" /NOLOGO /MANIFEST /MANIFESTFILE:"x64\Release\SquallDll1.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /SUBSYSTEM:WINDOWS /IMPLIB:"C:\Users\chris\Documents\Visual Studio 2010\Projects\SQUALL v1.2\64 bit\DLL\SquallDll1\x64\Release\SquallDll1.lib" /DLL /qnoipo

Should I be using other libraries?

ChrisG

0 Kudos
6 Replies
pbkenned1
Employee
1,157 Views

I can't reproduce error #6284 with my own example (tried both IA-32 and Intel 64 compilers).  You'll need to provide your own reproducer.  My command line was:

/O3 /Qopt-prefetch=2 /assume:buffered_io /Qip /Qopt-matmul /module:"x64\Release\\" /object:"x64\Release\\" /Fd"x64\Release\vc120.pdb" /libs:dll /threads /Qmkl:parallel /c

Regarding 'invalid argument for /Qmkl' -- you did install MKL along with the compiler, right? 

Patrick

 

0 Kudos
andrew_4619
Honored Contributor III
1,157 Views

the last parameter of GETFILEINFOQQ is a handle which is 4 bytes for win32 and 8 bytes for win64. Having  the wrong byte count on the call will probably be the problem.

use ifwin, only: handle
integer(handle) :: handle_variable_name

 

will probably fix it.

0 Kudos
Chris_G_2
Beginner
1,157 Views

Thanks app4619 - it looks sensible to me and I'll try it.

Patrick: Yes I installed MKL; I have a folder ......./Intel/Composer XE 2015/mkl/bin/intel64 containing mklvars_intel64.bat and ......./Intel/Composer XE 2015/mkl/lib/ia32 and intel64.

Thanks for your help

 

ChrisG

0 Kudos
pbkenned1
Employee
1,157 Views

Hello Chris,

Thanks for confirming you have MKL installed.  Regarding your issue with /Qmkl:parallel, a colleague who has VS2010 installed will check if the issue can be reproduced with that particular version of VS (I couldn't reproduce it with VS2013).  It's possible to have a defect in the IDE integration that only exists for a particular combination of VS + compiler.  I'll update this thread as I learn more.

 

Patrick

0 Kudos
Steven_L_Intel1
Employee
1,157 Views

This particular error has nothing to do with VS version nor with MKL. It is simply an incorrect declaration of the argument to GETFILEINFOQQ.

0 Kudos
Chris_G_2
Beginner
1,157 Views

Thanks everyone. The fix suggested by app4619 fixes everything except an error message

patmat.lib(PATMAT.dll) : fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

which is telling me I need to recompile PATMAT.dll as 64 bit, which I will now do.

ChrisG

 

0 Kudos
Reply