Add reference is used to add .NET assemblies, such as the Class Library project type. You should not add a reference to a non-.NET dll. Instead, you can add it to your project (Add existing item) and then just modify its properties to "Copy If Newer" (or "Copy Always"). That way your C++ DLL(s) will be copied into your output directory (bin\Debug or bin\Release). You can probably also use the solution properties to setup a dependency if both the C++ project and the C# project is in the same solution, but I've never tried this.
You should only copy the .DLL, the .LIB is used if you want to import it from another C or C++ project and the .pdb is just debug information (which might be useful when debugging, but is not required or used when running without debugger).
[DllImport("SomeLibrary")] can take the filename with or without .dll. The reason why you may want to do it without the .dll suffix is that it plays better with Mono should you ever want to support Linux or whatever.
Edit:
When you add a platform and/or a configuration, you basically create a whole copy of the set of settings, which just some single settings changed. If you check your project settings, you can find the target platform under the build tab.
I've never really checked what happens when it can find a .DLL for the right platform, but the .DLL does not contain the requested function. Maybe you get a DllNotFoundException in that case as well? How did you export your function in your C++ code? Did you use extern "C"? Did you use a .def file or __declspec( dllexport )?