- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have recently transferred a small suite of working Fortran programs to an MSc student's laptop, he is running Windows 10 and none of the programs executed until he had installed the relevant Intel redistributables, at which point all the programs worked except one.
The student is running a Chinese version of Windows 10 and there are just 2 parts of the error message I can read: one is the program of origin, which is indeed one of the programs I gave him, and the other is "for_alloc_pdtlen"
So far I have checked the following (in order of increasing desperation)
1) None of my programs have a variable such as "for_alloc_pdtlen" or "pdtlen" etc
2) "for_alloc_pdtlen" is not even a Googlewhack
3) Every allocate statement in the whole program has a "stat=" clause, so I am not expecting an allocation problem, and the student laptop seems to have more than enough memory
4) The Intel Dev Zone search returns nothing for "for_alloc_pdtlen"
Does anyone have any idea how I should proceed?
Is there any chance that some of the characters of this message have been macerated in translation and I have been looking in the wrong place?
As usual with MSc projects, time is of the essence.
Thanks in anticipation
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
That looks like a routine in one of the runtime libraries. They are not accessible via ordinary Fortran code - instead they come in during the compilation and linking stages. My suspicion is that the runtime libraries on the machine of your sudent are not compatible with the ones belonging to the compiler you used to build the programs. The solution would then be: supply them the appropriate runtime libraries.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
What is the actual error number? Is it a link, compile or runtime error?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It is a run time error, I have not given the student the source code. According to the student no part of this program appears to execute.
Quite literally all I have to go on is the attached screen shot - hence my question is more about the tactics of problem solving, than actually expecting a fix (although if anyone has a fix, do not be shy...)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
My knowledge of Chinese is limited to a handful of characters, but I have several Chinese colleagues. The screen shot really looks like a message about a missing entry point and the colleague I asked translated the message as "can not locate the codes entry point for_alloc_pdtlen, at dynamic link base(or library)"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The call to routine for_alloc_pdtlen is, in fact, one that is generated by the compiler to support parameterized derived types.
The problem you're seeing can be caused by the student having an older version of the redistributables than you used to create the working programs.
Please make sure that the redistributables are at least as new as the version of Intel Fortran that you used to build the program. The redistributables can be newer (we always strive for backwards compatibility) but cannot be older.
--Lorri
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear All,
Thank you so much for the prompt responses.
We will try updating the redistributables next, and reopen this topic if we need to.
N
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Another solution could be to build your program using static libraries instead of dynamic libraries. This will make your executable larger, but will ensure that the correct version of the routines are available to your users.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dear David
From my source code perspective, I do use my own static libraries, and they do make the executables bigger, but I did not know I could do this with the Fortran system libraries, I am guessing there is a combination of compiler and/or linker flags... or do I just add the relevant .lib files to my project just as I add my own static libraries, in which case, how do I know which are required and/or where they are stored?
(I am using VS Enterprise 2017, and Intel(R) Visual Fortran Compiler 18.0.5.274 [Intel(R) 64] in case that makes a difference)
This sounds like a really neat solution.
Thanks in anticipation,
Norman
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page