Why would REGSVR32 not find a DLL that is clearly there?

I'm installing a custom application on a brand new Windows 2003 Server. A couple of DLLs need to be added and registered, and I have copied them to the server in the C:\WINDOWS\System32 folder -- which is where they have always been when we've had the application running on Windows NT and 2000.

However, when I try to register them using:

regsvr32 c:\windows\system32\nameoflibrary.dll

It gives back:

LoadLibrary("c:\windows\system32\nameoflibrary.dll") failed - 
The specified module could not be found.

The DLL is however right there. I can see it. If I copy the path to Windows Explorer and attempt to run it, it tells me that I can't run a DLL, so I know it's there. One minor complication is that the DLLs were built in VB5 -- but the VB5 runtime is installed on the server, so this shouldn't be a problem.

Any ideas?


Solution 1:

It could be that a dependant module is missing. You need to look at the getlasterror code to determine why the module was not found.

Solution 2:

Jim B. is probably correct. Get DependencyWalker and load {nameoflibrary.dll} -- it will show you which dependent DLL is missing.