Hi @Michael-R-LegakoL-3com-com,
I think a better approach, is to use a macro to apply the dllimport/export, and then enable that macro in the library only.
For example, if you look at qmake's simple_dll test example, the simple.h header contains:
#ifdef SIMPLEDLL_MAKEDLL
# define SIMPLEDLL_EXPORT Q_DECL_EXPORT
#else
# define SIMPLEDLL_EXPORT Q_DECL_IMPORT
#endif
class SIMPLEDLL_EXPORT Simple
{
...
}
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
Cheers.