The following C++ code (called from Fortran, all compiled with silverfrost) opens a file under 32 bit in read mode but fails silently to open the same file in 64 bit.
f1 = fopen( input_filename, 'r' );
64 bit does get a file handle but does not open it for read (all attributes are cleared when inspected with handle.exe from sysinternals). This file handle cannot then be closed which causes more problems further on.
32 bit obtains a read handle fine (handle.exe reports an R flag for read which is correct).
I have checked;
- Latest 8.61 version of compiler.
- Both 32 bit DLLs (salflibc64.dll, clearwin64.dll) loaded from the 8.61 compiler path and both are version 22.2.3.15.
- Included /checkmate in the build process, nothing reported.
- Output the input_filename char buffer to a message box, appears the same in 32 and 64.
- The file attributes are checked by pausing the debugger immediately after fopen to ensure no other code is closing or interfering with the handle.
The next step is to isolate it to a tiny bit of Fortran and C++ code but this will take me an hour or so. Does this ring any bells for anyone? I may also try stepping back 8.5 as I did not receive bug reports on this code until the upgrade to 8.61.
Regards
Ryan