- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Using IVF 11.1.048 on MSVS 2008, x64 build on Vista.
We are now convertingFortran fromx32 to x64.
Getting this error on the x64 build "6284 No matching specific function for the generic function reference"
Do you have any suggestions? Should we send sample code?
Thanks in advance.
We are now convertingFortran fromx32 to x64.
Getting this error on the x64 build "6284 No matching specific function for the generic function reference"
Do you have any suggestions? Should we send sample code?
Thanks in advance.
- Etiquetas:
- Intel® Fortran Compiler
Enlace copiado
7 Respuestas
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
You probably need to change the declared type of the buffer argument to FILE$INFOI8. Please see the documentation on GETFILEINFOQQ for more details.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Steve,
Some of the documentation files have inappropriate preformatted text, including GETFILINFOQQ and GETFONTINFO, for example.
The text above the description of the derived types does not wrap to the width of the screen, making it hard to read.
Thanks,
David
Some of the documentation files have inappropriate preformatted text, including GETFILINFOQQ and GETFONTINFO, for example.
The text above the description of the derived types does not wrap to the width of the screen, making it hard to read.
Thanks,
David
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
David,
Yes, I see what you mean. I'm glad to report that this is already resolved for our next major release.
Yes, I see what you mean. I'm glad to report that this is already resolved for our next major release.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
We are getting the same error when converting from x32 to x64. The type of the integers use din the argument list are defined in mudule ifmt. The type is defined byINT_PTR_KIND. Is this integer kind different between 32 and 64 bit?
THis is the error that our make file spits out.
Line 32: relap\rnewp.for(371): error #6284: There is no matching specific function for this generic function reference. [CREATETHREAD]
Line 44: relap\trnctl.for(46): error #6284: There is no matching specific function for this generic function reference. [CREATETHREAD]
This is the line from rnewp.for that it is complaining aboutthhndl = CreateThread(0,0,hynoded,0,0,thrid)
thhndl is defined as:integer(int_ptr_kind()) thhndl,thrid
Are the 0,0 in(0,0,hynoded,0,0,thrid) interprited as 32bit and should be 64bits
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
Yes, the whole reason for creating the INT_PTR_KIND() intrinsic is that it returns different results on 32 and 64-bit platforms.
Here is the declaration of the CreateThread routine in KERNEL32.F90:
FUNCTION CreateThread( &
lpThreadAttributes, &
dwStackSize, &
lpStartAddress, &
lpParameter, &
dwCreationFlags, &
lpThreadId)
import
integer(HANDLE) :: CreateThread ! HANDLE
!DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'CreateThread' :: CreateThread
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpThreadAttributes
TYPE (T_SECURITY_ATTRIBUTES) lpThreadAttributes ! LPSECURITY_ATTRIBUTES lpThreadAttributes
integer(DWORD) dwStackSize ! DWORD dwStackSize
integer(LPVOID) lpStartAddress ! LPTHREAD_START_ROUTINE lpStartAddress
integer(LPVOID) lpParameter ! LPVOID lpParameter
integer(DWORD) dwCreationFlags ! DWORD dwCreationFlags
integer(LPDWORD) lpThreadId ! LPDWORD lpThreadId
The 0 arguments are not the problem. How is hynoded declared? That's the start address and needs to be a pointer-sized integer. The rest looks ok to me. The compiler will allow 0 for the arguments.
Here is the declaration of the CreateThread routine in KERNEL32.F90:
FUNCTION CreateThread( &
lpThreadAttributes, &
dwStackSize, &
lpStartAddress, &
lpParameter, &
dwCreationFlags, &
lpThreadId)
import
integer(HANDLE) :: CreateThread ! HANDLE
!DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'CreateThread' :: CreateThread
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpThreadAttributes
TYPE (T_SECURITY_ATTRIBUTES) lpThreadAttributes ! LPSECURITY_ATTRIBUTES lpThreadAttributes
integer(DWORD) dwStackSize ! DWORD dwStackSize
integer(LPVOID) lpStartAddress ! LPTHREAD_START_ROUTINE lpStartAddress
integer(LPVOID) lpParameter ! LPVOID lpParameter
integer(DWORD) dwCreationFlags ! DWORD dwCreationFlags
integer(LPDWORD) lpThreadId ! LPDWORD lpThreadId
The 0 arguments are not the problem. How is hynoded declared? That's the start address and needs to be a pointer-sized integer. The rest looks ok to me. The compiler will allow 0 for the arguments.
- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
[bash]relaprnewp.ff
1 file(s) copied.
ifort -nologo -c -auto -Qansi_alias- -pad_source -traceback -fltconsistency -fpconstant -nogen-interfaces -module:o -Io -Ienvrl -Imatpro -Irelap -Iscdap -Igraphics -object:relaprnewp.o relaprnewp.for
relaprnewp.for(313): error #7112: This actual argument must not be the name of a procedure. [HYNODED]
thhndl = CreateThread(0,0,hynoded,0,0,thrid)
-----------------------------------^
compilation aborted for relaprnewp.for (code 1)
Could Not Find D:iss_relapRELAP5Mod35rs35da.intl64relaptrnctl.o
auxxdefinei
relaptrnctl.ff
1 file(s) copied.
ifort -nologo -c -auto -Qansi_alias- -pad_source -traceback -fltconsistency -fpconstant -nogen-interfaces -module:o -Io -Ienvrl -Imatpro -Irelap -Iscdap -Igraphics -object:relaptrnctl.o relaptrnctl.for
relaptrnctl.for(48): error #7112: This actual argument must not be the name of a procedure. [HYNODED]
thhndl = CreateThread(0,0,hynoded,1,0,thrid)
-------------------------------------^[/bash] We changed "use ifmt" to use kernel32" and this is what we are getting now.- Marcar como nuevo
- Favorito
- Suscribir
- Silenciar
- Suscribirse a un feed RSS
- Resaltar
- Imprimir
- Informe de contenido inapropiado
CreateThread wants a pointer-sized integer containing the start address, so pass LOC(hynoded).
Responder
Opciones de temas
- Suscribirse a un feed RSS
- Marcar tema como nuevo
- Marcar tema como leído
- Flotar este Tema para el usuario actual
- Favorito
- Suscribir
- Página de impresión sencilla