1a) .libs are what you build your program with. Those are what Visual Studio needs to know about. The static/dynamic debug/release stuff merely changes which .libs you need, not the fact that you need .libs.
1b) .dlls are the runtime dependencies that you distribute with a dynamically linked program executable. In a statically linked program, these dependencies are all inside the executable, so you don't have separate files for them. Visual Studio should never need to touch these, unless you're compiling them from source yourself.
2) At least tell us what the error was and what test program you're talking about. We aren't psychic.