The definition of at least one public method in the exported class must have _declspec(dllexport) prefix for lib file to be created. If none of the methods have this prefix, only the declaration (i.e. header file) will available, but the class will be impossible to instantiate (exported constructor is necessary for this). If at least one method has _declspec(dllexport) prefix, then compiler will understand that dll users must be able to link to this dll. OS loads such dlls as soon as exe linking to them is loaded.
You may consider a "factory" approach to your problem. Symbian OS, for example, implements such approach with polymorphic dlls. To do this you have to:
Declare (i.e. header file) and define (i.e. cpp file) the class in your dll. No need for anything else.
Create a "factory" function in your dll, which would make an instance to your class and return pointer to it. This function must have _declspec(dllexport) prefix.
Share your header file and lib file with your users.
Users include the header file and link with the lib file.
Users call the factory function to instantiate the class (i.e. make the object), and then use it as a normal class.
The 5 steps above work like charm in Symbian OS. You would have to try it yourself on your platform and post the results. I, frankly, have not tried it on Windows.