I have a C# program which calls a C++ dll using DLLImport(stdcall).
But using the Process Monitor I found that everytime I call a function in the C++ dll it causes three IO operations to open the DLL file, read it and close it.

The function in C++ dll i’m calling is static. I don’t have the source of the C++ dll to change it. What can i do to avoid these excessive IO operations? Can i use DLLImport to load a dll from memory instead of file? Any suggestions?
Try to load DLL explicitly and then make your call. Keep the pointer to the DLL and unload it before closing your application.