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

Entry point not found in libmmd.dll

Goicochea__Javier
731 Views

Dear Dr. Fortran and community,

I am getting the following entry point not found error message: "The procedure entry point _libm_sse2_cbrt could not be located in the link library libmmd.dll." According to the forum this function computes the cubic root (^1/3) in a fast way.

This error is produced when the solution is compiled in Release mode. In Debug mode it works perfect. Note that for both compilation modes the libmmd.dll (or libmmdd.dll for debug) corresponds to the latest version 13.1.0.2. I have verified that the Windows path is pointing to %INTEL_DEV_REDIST%redist\ia32\compiler. Also when I add the /MDd for compiling in Release mode the error is not produced.

I have made a  screenshot using Dependency walker showing the differences between the libmmd (left) and libmmdd (right). Could some body suggest what could be the source of the problem? And a possible solution? Perhaps I have overlooked to some other points.

Thank you in advance, Javier

0 Kudos
5 Replies
TimP
Honored Contributor III
731 Views

I see __libm_sse2_cbrt in my most recent installation of ia32\libmmd.dll, same as corresponding libmmdd.dll.  I don't have your version installed.

13.1.0.2 doesn't look like a latest version.

I don't see such a function in the intel64 installations which I normally use.

0 Kudos
Steven_L_Intel1
Employee
731 Views

13.1.0.2 is the latest version of libmmd.dll. However, _libm_sse2_cbrt has been in libmmd.dll since Composer XE 2011, if not earlier. My guess is that there is an older version of libmmd.dll on PATH that is being seen first. What I don't see in the Dependency Walker screenshot is the path to LIBMMD being used.

The reason you don't see this referenced in a Debug build is that this routine is used as part of an optimization, which is disabled for debug builds.

0 Kudos
Goicochea__Javier
731 Views

Thank you TimP and Steve for the reply. 

After several attemps, I have managed to by-pass the problem by selecting: 

Project properties > Fortran > Libraries > Runtime Library > Multithreaded

Before I was selecting the Multithread DLL (/libs:dll /threads) option. I am not sure why this solved the problem. I have noticed that the DLL that depends on Fortran increase its size from 203 to 1073 Kb. So, I suppose the missing entry points (functions) are now embeded in the DLL. Still it is a bit strange why is it not working under the Multithread DLL option. Note that there was no change in the system PATH or default library folder under VS2010.

One additional thing I did was to follow these steps to debug under release mode (MS suggested settings):

http://msdn.microsoft.com/en-us/library/fsk896zz.aspx

Thank you, Javier

0 Kudos
Goicochea__Javier
731 Views

Just a quick observation. The steps for debugging under release mode were applied to the C/C++ project using the Fortran DLL. Still these did not solved the problem when the Fortran DLL was built using the Multithreaded DLL option. 

Javier

0 Kudos
Steven_L_Intel1
Employee
731 Views

What you did was switch from the DLL libraries to the static libraries. This is fine if your DLL is not going to be called from Fortran.

0 Kudos
Reply