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

Entry Point Nor Found

JulieMarieC
Novice
1,275 Views

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

 

 

 

0 Kudos
1 Solution
FortranFan
Honored Contributor III
1,267 Views

@JulieMarieC ,

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.

 

View solution in original post

0 Kudos
3 Replies
FortranFan
Honored Contributor III
1,268 Views

@JulieMarieC ,

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.

 

0 Kudos
JulieMarieC
Novice
1,257 Views

@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!

0 Kudos
FortranFan
Honored Contributor III
1,242 Views

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:

  1. 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.
  2. 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.
0 Kudos
Reply