Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
Announcements
FPGA community forums and blogs have moved to the Altera Community. Existing Intel Community members can sign in with their current credentials.

Entry Point Nor Found

JulieMarieC
Novice
1,825 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,817 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,818 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,807 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,792 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