Switching large arrays to ALLOCATABLE will allow the program to start, but it will likely then fail when the large array allocation is attempted.The error is a popup window that says The application was unable to start correctly (0xc0000018).
Compaq Visual Fortran Code One YearI used the same code one year ago on a different system with a similar operating system and it worked fine.
Loaded wow64imagesection, no matching symbolic information found. Loaded C:WindowsSysWOW64kernel32.dll, no matching symbolic information found. The thread 0x4124 has exited with code -1073741800 (0xC0000018). Compaq Visual Fortran .Exe Has ExitedThe program C:wrokdircodesfaqiemodifiedloadDebugDyneii.exe has exited with code -1073741800 (0xC0000018). A similar problem was also reported in a post several years ago, but no solution was posted. Run dependency walker on your exe to find what runtime dlls are called maybe. Warning: At least one delay-load dependency module was not found. Your project is not consistent with regards to bitness Also, in the Solution Platform pull-down you may have 2 or 3 choices: Win32, x64, and optionally x86. From your suggestions what i get is: 1) I should re-check the address of kernel32.dll in my compiler and use the one available at SysWOW64 instead of the one available at System32 2) I checked the Platform available in CVF 6.6.0 (buildconfigurations) it can only use Win32 choice which is being used. DYNEII.EXE. x86. 0x--------00400000. There really isnt much you can do about this with CVF, unless you have set the stack reserve size much larger than needed. If data size is the ultimate problem, the only real solution is to use a 64-bit compiler (Intel Visual Fortran supports all your CVF code) and change the static arrays to ALLOCATABLE. Even in 64-bit, the 2GB limit on static code and data remains.). Compaq Visual Fortran Windows 10 With 64BitI agree with your comments, but what is confusing me is that I have been using the same code last year on windows 10 with 64bit version. Please generate a link map (on the Linker property page or add link map at the end of the df command that does the linking), zip the.map file and attach it here. I will also note that the code and data used by dependent DLLs also are included in the size limit. While this does not exceed the linker maximum segment length, the sum of this together with the sum of the other segments will exceed 2GB. You likely have two options: 1) make the overly large arrays located in GLOBRE allocatable 2) Enable the 3GB switch in BOOT.INI (google windows 3gb switch) Option 1 is preferred as this may future-proof your program. If you can refactor the code sufficiently to manage the data, either by using ALLOCATABLE facility introduced in Fortran starting with the 1990 revision along with system HEAP andor the use of 64-bit target (x64), your program should work alright on Windows OS. However if the size is large, the issue you state in the original post is reproduced. Without upgrading to a compiler with 64-bit support, the only thing I can think of is to rewrite the code to not require such large arrays (perhaps by storing some information in a file.) The 3GB Windows option would have to be combined with the Large Address Aware linker flag, and even then success is not guaranteed.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |