I think a better approach, is to use a macro to apply the dllimport/export, and then enable that macro in the library only.
Then the simple_dll.pro file contains:DEFINES += SIMPLEDLL_MAKEDLL
So, this way, when the library is being built (via simple_dll.pro), then class is dllexport'ed. But when other code uses that same header (in doesn't define SIMPLEDLL_MAKEDLL) then that same class is dllimport'ed instead.
Typically, you end up doing this sort of thing to many classes in a single library, so rather than having the #ifdef ... #define ... etc in each header file, it often ends up being written once in a "global" project header of some kind. For example, Q_CORE_EXPORT gets defined in qglobal.h, then used throughout all of the exported core Qt class headers.
Also see:When creating a library with Qt/Windows and using it in an application, then there is a link error regarding symbols which are in the library