Скопипастил решение сюда по просьбе 
xepДля Винды нужно в каждой библиотеке сделать индивидуальный H-файл и объявить в нём директиву экспорта.
Только одна библиотека и только одна директива. Т.е. нельзя директиву экспорта из одной библиотеки заюзывать в другую. Особенно если другая использует первую.
Если посмотреть исходники Qt
class Q_
CORE_EXPORT QString ... для QtCore4.dll
class Q_
NETWORK_EXPORT QFtp ... для QtNetwork4.dll
Разным модулям - разные директивы экспорта.  
Для программистов Windows это и так должно быть понятно. Для тех кто портирует библиотеки с Линукса в Винду это НЕ сразу понятно. Например, я не сразу сообразил, т.к. Линуксу до "лампады" эти директивы. 
/*mylibname.h Короткий H-файл для всех исходных модулей библиотеки*/
#ifndef __
MYLIBNAME_H__
#define __
MYLIBNAME_H__
#ifdef Q_OS_WIN 
#   if defined( 
QT_BUILD_MYLIBNAME_LIB  )
#      define Q_
MYLIBNAME_EXPORT __declspec(dllexport)
#   else 
#      define Q_
MYLIBNAME_EXPORT __declspec(dllimport)
#   endif
#else 
#      define Q_
MYLIBNAME_EXPORT
#endif
#endif // __
MYLIBNAME_H__
/*Классы для библиотеки объявлять так*/
#include "mylibname.h"
class Q_
MYLIBNAME_EXPORT MyClass {...};
/*В файл проекта библиотеки добавить */
win32 {
 DEFINES +=  
QT_BUILD_MYLIBNAME_LIB} 
/*В файл проекта программы, использующей эту библиотеку */
win32 {
 DEFINES +=  
QT_BUILD_MYLIBNAME_LIB} 
НЕ ДОБАВЛЯТЬ