- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
Link Copied
7 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
You probably need to change the declared type of the buffer argument to FILE$INFOI8. Please see the documentation on GETFILEINFOQQ for more details.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
[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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
CreateThread wants a pointer-sized integer containing the start address, so pass LOC(hynoded).

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page