Procedure Entry Point Dynamic Link Library

1 view
Skip to first unread message

Adrienne Borgman

unread,
Aug 3, 2024, 4:37:51 PM8/3/24
to biotenbimar

I have a really vague problem, but I hope someone can help with it. I was modifying a C++ project and yesterday it was still working, but today it's not. I'm pretty sure I didn't change anything, but to be completely sure I checked the project out from SVN again and I even reverted to a previous system restore point (because this is a work computer, it sometimes secretly installs updates etc.). After succesfully compiling it, the program can start up, but after I interact with it, I get this error:The procedure entry point ?methodName@className@@UAEXXZ could not be located in the dynamic link library libName.dll.

I've searched the internet, but most people's problems seem to be caused by an older version of the DLL being used. I searched my computer and there is no older version. If I delete the correct version, the application doesn't start. If I then recompile the project, the DLL is created again, so I'm both pretty sure that the application is using the correct DLL and that the compilation is creating it. If I introduce syntax errors into the method that the error refers to, the project refuses to compile, so I guess this means that it is also compiling the files that contain the method.

Basically I don't know anything about DLL's, linking, etc. so I would greatly appreciate it if anybody has an idea as to why the functions that are very clearly defined in the project are all of a sudden not making it into the DLL anymore. I know this is vague and if any more information is required I will gladly provide it. Thanks!

Update: I have tried the given suggestions, but I'm still stuck. __declspec(dllexport) is apparently not used in the entire project. Opening the DLL with Dependency Walker shows me an empty top right section and the section below it lists the function from the error message. If I check Undecorate C++ Functions it looks fine, but if I don't I get the weird question marks and @s from the error message and there appears to be a difference at the end:

Are you actually using __declspec(dllexport)? My guess is no -- without that declaration, that function will not be exported by the DLL (or in other words, programs loading that DLL will not have access to functions without that declaration).

So that if you have #define MAKING_DLL before that section, all functions that are declared like FOO_API int BakeACake() will be exported based on whether MAKING_DLL was defined. It's possible that the project was expecting MAKING_DLL (or its equivalent) to be defined on the command line, depending on the project type built (something like /DMAKING_DLL; or you might even need to define FOO_API yourself like /DFOO_API=__declspec(dllexport).

The empty top right section in Dependency Walker just means your program isn't linking against the DLL's corresponding .lib file. That's okay, it just means you are using LoadLibrary or LoadLibraryEx to access functions in the DLL.

Another fairly likely scenario (based on the fact that the mangled names are different) is that the program was built using a different version of Visual Studio than 2008, which you used to build the DLL. Unlike plain C, there's no standard binary interface for C++, which means that you have to use the same compiler to build the program and the DLL when you are using C++ classes in the DLL. If you can, try rebuilding the program in VS2008, or try rebuilding the DLL in the same version of VS as the program was built.

Download dependency walker and open your dll using this tool. It will show a list of exported functions from your dll. Check whether the above said method is part of the expected functions. If it's not, then it means you accidentally removed __declspec(dllexport) for one of the classes in that dll.

I feel a bit stupid, but I found the answer. The application (exe) I was using apparently loaded a second, different dll which had a dependency on the one mentioned in my original post. This second dll was still expecting the old functions and also needed to be recompiled against the updated dll.

Using information of the posts above I found simple general solution. All you need to do is open programs executable with dependency walker, look for the missing functions, look what dll's are using it, find the project which builds that dll and rebuild it.

I have a Fortran library that is beibg called from a C++ main program. It generally works fine except that when certain subroutines are included in the Fortran library, the following error message shows up while executing the C++ program:

Note that the subroutine that was added to the Fortran library is not being called or referenced by the C++ program. The mere presence of that subroutine in the library causes the above error to occur.

You have in PATH an older Intel Fortran run-time library DLL. That entry point was added in version 17. Make sure you don't have old copies of libifcoremdd.dll in your path or that you're running from an environment for an older compiler version.

Thanks for your timely help. I did a search on my computer and there are 6 files named libifcoremdd.dll at the following locations. How do I modify/check the path? I upgrade my version of the Intel Fortran Compiler every year and unfortunately the installation/update is not completely clean.

The SysWOW64 folder has other libifXXX files (libifcoremd,dll, libifcorert.dll, libifcorertd,dll, libifportmd.dll) and libioXXX + libmmdXXX files. All have the same timestamp. Are these legitimate as well?

I am facing similar errors when I try to run the released version of my code in Fortran in other computers. Both, the debug and released version are able to run on my computer without any error. However, when I try to share the executable as released version, the people are getting errors as the image below: The procedure entry point__svml_fmodf4 could not be located in the dynamic link library svml_dispmd.dll. Also, other people get an error related to some libraries that are missing (libifcoremd.dll, libifportmd.dll, libmmd.dll, svml_dispmd.dll) how could I solve this error? is it a configuration aspect?

You have installed the redistributables package that targets Itanium (IA64). It is very unlikely that you have a system with an Itanium processor. What you want instead is the package for Intel64 (called 'em64t' earlier and 'intel64' now) or IA32 if you have a 32-bit OS.

Intel does not verify all solutions, including but not limited to any file transfers that may appear in this community. Accordingly, Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.

I recently updated to the new DCS version that dropped a while ago and ever since I was unable to start my DCS. I have used admin mode and re installed the game. I have also checked if my anti virus is the problem and still nothing can fix it. Does anyone know a fix for this.

Full error text:
The procedure entry point could not be located in the dynamic link library C:\Games\DCS World OpenBeta\bin\DCS.exe.

I believe the answer you want most at the moment is not "who is the culprit" but more something like "how the hell do I get it to work like it used to". So let's forget about the "it happened right after this, so it cannot be that". We'll simply try many things that worked out for other users, until it works for you.

I upgraded from I think v2.5.something to the latest (v2.7.something) after not playing for some number of months and am getting these errors as well.

Added exclusions to the Saved Game and main DCS folders to Windows Antivirus to no effect.

Guess I'll try reinstalling. Right at the start, before the update, it popped up a dialog saying a whole bunch of files were unneeded and I could keep or delete them; I chose delete. Maybe that's the issue, although rather ridiculous there's an option to delete if so. But who knows, that might not be it, just figured I'd mention it.

Hopefully reinstall works.

Summary: Entry Point Not Found error occurs when a DLL for a particular app or software goes missing or corrupted. You can fix it by restoring DLL files from the antivirus programs' quarantined list, running DISM and SFC scans, or following the other methods mentioned in this blog.

Users encounter this error while opening specific applications or programs, like gaming software, photo-video editing apps, Google Chrome, etc. It may also pop up every 10-15 minutes if related to some service/program running in the background.

If there are issues with Windows images and system files, your system and programs installed may not function correctly and throw errors. You can use Windows built-in tools DISM and System File Checker (SFC) to fix such issues. Where DISM will repair the corrupted or damaged Windows images, SFC will replace the damaged or corrupted system files with their correct versions. Follow the given steps:

Junk files are usually temporary files created on your system to perform specific tasks. However, over time, they become of no use. If not removed, they accumulate on your hard drive, consuming a lot of storage space and eventually causing slow-running PC or other performance-related issues. Sometimes, you may have problems running your application/software. So, removing Junk data from your system is better, and try rerunning the software/app. Follow the below steps:

If, after all these methods, you still face the Entry Point Not Found error, you can remove or uninstall the problematic program, application, or software and reinstall it afresh, checking its compatibility with your system. However, uninstalling the application or software will remove all its related data.

DLL stands for Dynamic Link Library. It is also known as a shared library in the UNIX-based OSes. DLL is one of the most useful Windows components you can use to share codes and resources or even shrink the size of your application. The DLL makes it simpler to service and extend the applications..

c80f0f1006
Reply all
Reply to author
Forward
0 new messages