- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I am trying to use the newest Fortran compiler (Intel® Fortran Compiler Classic 2021.8.0 [IA-32]) to compile a dll. When I want to run my executable (a C# code that calls the Fortran dll), I get this message:
The procedure entry point pow2o3 could not be located in the dynamic link library.
Previously, I was using Intel Fortran Compiler (Intel(R) Visual Fortran Compiler 16.0.3.207 [IA-32]) and the communication between C# and Fortran codes is ok.
In the event viewer, I get this message:
The IO operation at the logical block address 0x44fb3a8 for Disk1 (PDO name: \Device\000000e8) was retried.
Thanks in advance for your help
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Have you tried to use DUMPBIN from Microsoft or Dependency Walker or some other tool to inspect your DLL and confirm pow2o3 is exported? Otherwise, that will be a good first item to check.
Please also examine whether the export symbol is exactly as expected by your C# code. If there are differences in casing of letters or decoration in the naming - _POW2O3@NN vs pow2o3 , that will be a problem, as you know.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Have you tried to use DUMPBIN from Microsoft or Dependency Walker or some other tool to inspect your DLL and confirm pow2o3 is exported? Otherwise, that will be a good first item to check.
Please also examine whether the export symbol is exactly as expected by your C# code. If there are differences in casing of letters or decoration in the naming - _POW2O3@NN vs pow2o3 , that will be a problem, as you know.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
@FortranFan
Thanks!
It solved my problem!
I used Dependency Walker and I have added the library libmmdd.lib as additional dependency. With the old Fortran compiler, it was not needed.
Thanks for your help!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Glad you were able to solve the problem.
You may want to look into a couple of aspects once you have completed your current tasks involving this application with C# and Fortran:
- A dependency on libmmdd.dll suggests to me a debug version of the Intel dynamic math library. Ideally you would want to have the Release target of your code depend on the optimized version of the Intel library; the debug version is likely to be unoptimized. You may want to check whether this is indeed the case.
- If your C# code is built with "Any CPU" or you can add "x64" configuration, you will know you can interoperate it with Intel 64 target i.e., 64-bit version of your Fortran library. This makes it better if you're running 64-bit OS (likely). In the 64-bit domain, calling conventions and name-mangling, etc. are clearer than what Microsoft set out with their 32-bit Windows APIs. Plus the new Intel compiler IFX is not expected to support IA-32 targets. So a transition to 64-bit computing is worth a look, if you are not doing so already and/or if you are able to try it out.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page