If I use the Win32 API LoadLibrary to load the same DLL 3 times in a row it should return 3 distinct handles and the functions in each library should all have diffe
No, it doesn't. To get around this, you can copy the .dll to a temporary file (as many times as you need to load the .dll) and then delete the files once you're done.