- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have just installed the lastest version of IVF with VS 2008 on a 64 bit computer using 64 bit Windows Vista. My Fortran code used to be compiled without problems in a 32 bit computer using IVF and VS 2008. I compiled this same code in the new 64 bit machine using the 32 bit platform. The compliation process was as in the 32 bit machine creating the executable file, but when I want to run this file it says that the libifcoremd.dll file cannot be found and the program is stopped. Well, this is not all, I also wanted to used the 64 bit compiler. I used VS to create the 64 bit platform with the configuration manager (the new platform was created from the 32 bit one). This time, the compiler is producing the following error:
Error 17 Error: There is no matching specific function for this generic function reference. [LOADCURSOR] E:fldlibplatform-wiq.f90 767
This error is not produced when using the 32 bit compiler.
Help please!!!!
Rafael
I have just installed the lastest version of IVF with VS 2008 on a 64 bit computer using 64 bit Windows Vista. My Fortran code used to be compiled without problems in a 32 bit computer using IVF and VS 2008. I compiled this same code in the new 64 bit machine using the 32 bit platform. The compliation process was as in the 32 bit machine creating the executable file, but when I want to run this file it says that the libifcoremd.dll file cannot be found and the program is stopped. Well, this is not all, I also wanted to used the 64 bit compiler. I used VS to create the 64 bit platform with the configuration manager (the new platform was created from the 32 bit one). This time, the compiler is producing the following error:
Error 17 Error: There is no matching specific function for this generic function reference. [LOADCURSOR] E:fldlibplatform-wiq.f90 767
This error is not produced when using the 32 bit compiler.
Help please!!!!
Rafael
Link Copied
6 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My guess is that you have declared the hinstance argument to be INTEGER*4. Make it INTEGER(HANDLE) and it should compile.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear Steve,
I was engaged with other matters and I could not post a reply. I feel I am not understanding your reply. There is an an option for changing the Default Integer Kind in the property pages. The current value is 4. I changed this value to 2 and 8 but the compilation also fails. The fortran line giving problems is Cursor = LoadCursor(0, IDC_CROSS). The Cursor variable is simply declared as INTEGER. I changed this for INTEGER(HANDLE), but the same error is produced: Error 16 Error: There is no matching specific function for this generic function reference. [LOADCURSOR]. Perhaps I am not understanding your suggestion.
Thanks in adavance.
Rafae
I was engaged with other matters and I could not post a reply. I feel I am not understanding your reply. There is an an option for changing the Default Integer Kind in the property pages. The current value is 4. I changed this value to 2 and 8 but the compilation also fails. The fortran line giving problems is Cursor = LoadCursor(0, IDC_CROSS). The Cursor variable is simply declared as INTEGER. I changed this for INTEGER(HANDLE), but the same error is produced: Error 16 Error: There is no matching specific function for this generic function reference. [LOADCURSOR]. Perhaps I am not understanding your suggestion.
Thanks in adavance.
Rafae
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I do not recommend changing the default integer size.
For objects that are "address-sized", declaring them simply as INTEGER is not sufficient as on a 64-bit platform that is wrong. The correct thing to do is to declare them using the appropriate "kind" specifier, such as INTEGER(HANDLE).
In the case of LoadCursor, it has two arguments. The first is the hInstance, which is a handle to the "instance" for which you want the cursor loaded. Since it is a handle, that means its size is different between 32 and 64-bit applications. You passed 0, which is "default integer". If you make that 0_HANDLE, it should work on both platforms; this means "0 of kind HANDLE".
The second argument is the name of the cursor. You're using the predefined IDC_CROSS, which is fine. You MUST also declare the "cursor" variable to be INTEGER(HANDLE) otherwise it will have an incorrect value on 64-bit systems.
For objects that are "address-sized", declaring them simply as INTEGER is not sufficient as on a 64-bit platform that is wrong. The correct thing to do is to declare them using the appropriate "kind" specifier, such as INTEGER(HANDLE).
In the case of LoadCursor, it has two arguments. The first is the hInstance, which is a handle to the "instance" for which you want the cursor loaded. Since it is a handle, that means its size is different between 32 and 64-bit applications. You passed 0, which is "default integer". If you make that 0_HANDLE, it should work on both platforms; this means "0 of kind HANDLE".
The second argument is the name of the cursor. You're using the predefined IDC_CROSS, which is fine. You MUST also declare the "cursor" variable to be INTEGER(HANDLE) otherwise it will have an incorrect value on 64-bit systems.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve,
thanks a lot!!!!!
Problem solved!!!!!
Rafael
thanks a lot!!!!!
Problem solved!!!!!
Rafael
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Steve, I didn't have time to play with 11.0 beta yet. Still, if it's not too late, I'd really like to see the IVF default project templates revisited. In particular, the Win32 application created with project wizard contains quite a number of anachronisms. Several examples:
I know this forum is not the best place for such suggestions, but it just struck my mind...
- Most variables declared as integer*4. I don't think that this form is standard at all. It will not work on 64-bit systems (if the wizard generates the same code).
- Window procedure INTERFACEs are declared in an INCLUDEd .fi file (why not a module?)
- "Globals" module is unnecessary.
- !DEC$ATTRIBUTES use undocumented (?) _X86_ predefined preprocessor symbol. What does the !DEC$ELSE refer to now -- Alpha architecture ???
- Resource identifiers use strings rather than integer IDs
- Dialog application uses DlgModeless dialog + message loop rather than much simpler DlgModal
I know this forum is not the best place for such suggestions, but it just struck my mind...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Some of those changes have already been made. The others are on our list.

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