Yes, I am compiling with the /MD option, and YES, it needed msvcr71.dll! Thank you very much!
In retrospect, I suppose I should have looked at the import table for my DLL. It needs kernel32.dll, user32.dll, and... msvcr71.dll. I just thought the "user lib not found" error was for the functions in _my_ DLL, which was thoroughly confusing.
More info from MSDN:
...and...
Incidentally, can you suggest any other options I might have besides using msvcr71.dll? I'm trying to make (a) the smallest DLL with (b) the most compatibility that I can. I imagine I could try out older and/or different compilers with different C libraries, but I'd value an experienced opinion at the moment.
Thanks again.
In retrospect, I suppose I should have looked at the import table for my DLL. It needs kernel32.dll, user32.dll, and... msvcr71.dll. I just thought the "user lib not found" error was for the functions in _my_ DLL, which was thoroughly confusing.
More info from MSDN:
Applications compiled with [the /MD] option are statically linked to MSVCRT.lib. This library provides a layer of code that allows the linker to resolve external references. The actual working code is contained in MSVCR71.DLL, which must be available at run time to applications linked with MSVCRT.lib.
...and...
An application should use and redistribute msvcr71.dll, and it should avoid placing a copy or using an existing copy of msvcr71.dll in the system directory. Instead, the application should keep a copy of msvcr71.dll in its application directory with the program executable. Any application built with Visual C++ .NET using the /MD switch will necessarily use msvcr71.dll.
Incidentally, can you suggest any other options I might have besides using msvcr71.dll? I'm trying to make (a) the smallest DLL with (b) the most compatibility that I can. I imagine I could try out older and/or different compilers with different C libraries, but I'd value an experienced opinion at the moment.
Thanks again.