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

64-bit compiler queries

dannycat
New Contributor I
276 Views

Now that I have enabled the x64 compiler I have managed to start compiling the program. As Steve mentioned in the previous discussion I have had to make all integer variables relating to handles integer(HANDLE) type when using Win32 API calls, also the lparam term of the SendMessage function needs casting as int(xxx,UINT_PTR) kind. There area coupleother issues that I have encountered so farfor which I would be grateful for any advice.

1. the statement !DEC$ OBJCOMMENT LIB:F90SQL.LIB produces a sytax error, "found IDENTIFIER 'F90SQL' when expecting one of: ". This compiled OK in 32-bit version. (Note: the library file F90SQL.LIB is a 32-bit library but I don't understand why this would result in a compilation syntax error, but would only appear as a problem during the link operation).

2. What do you use toreplicate the LOWORD(mesg%lparam) or HIWORD(mesg%lparam) macros, where mesg is the defined as a T_MSG data type. Currently I get a warning that data type of argument does not match the definition [laparm].

Thanks for reading

0 Kudos
2 Replies
Ron_Green
Moderator
276 Views

F90SQL.LIB needs to be in quotes- it does need to be a character constant.As it is, unquoted, the compiler thinks it's a symbol. I'm not sure how this compiled previously. Try a space between the ":" and the character string but I think it's the lack of quotes that is the problem.

F90SQL is a 32bit library - you are right, you will get a link error if you try to use that with a x64 application. I am not sure, but I have not seen a 64bit version of that library. If you find one, please let all of us know.

HIWORD and LOWORD require 32bit integers as arguments. You can try:

HIWORD( INT(mesg%lparam,4) ) to convert the 64bit integer to a 32bit integer. However, you are truncating the upper 2 words doing this. Is the data still stored in the lower 2 words of lparam inyour 64bit code? If so this should work.

LOWORD( INT(mesg%lparam,4) ) should work fine, since I assume the data in the lower word is still the same in the 64bit case.

ron

0 Kudos
dannycat
New Contributor I
276 Views
FYI I recently received this e-mail when I enquired about the availablility of a 64-bit version of the f90SQL software.
"We are presently in the process of making the source code for f90SQL available through SourceForge. I will send you an email when we have it ready to go, and it will hopefully be soon.

Best regards,

Nick Vogel

Canaima Software Inc."

P.O. Box 13162

La Jolla, CA. 92039 U.S.A.

sales@canaimasoft.com

http://www.canaimasoft.com

Maybe there is hope yet. Maybe someone out thereknows more.

Regards

Steve (aka dannycat)

0 Kudos
Reply