I think now I understand a little bit better what's going on: QList<QVariable> is automatically instantiated because of the inheritance in qdbusmessage.h
But when compiling kdecore, this is not known, so the compiler instantiates QList<QVariable> again, and we get the linker error. To fix the linker error we just have to show the compiler qdbusmessage.h and all is fine. $ svn diff kconfigbase.h Index: kconfigbase.h =================================================================== --- kconfigbase.h (revision 555414) +++ kconfigbase.h (working copy) @@ -27,6 +27,7 @@ #include <qvariant.h> #include <kdelibs_export.h> #include <kdebug.h> +#include <dbus/qdbusmessage.h> template <typename KT, typename KV> class QMap; class QString; And indeed this solves the linker error. But maybe +#ifdef Q_OS_WIN +template class KDE_IMPORT QList<QVariant>; +#endif is the better solution because including qdbusmessage.h is expensive. qdbusmessage.h includes qdbusmacros.h and there we have: #ifdef Q_CC_MSVC #include <QtCore/qlist.h> #include <QtCore/qset.h> #include <QtCore/qhash.h> #include <QtCore/qvector.h> class QDBusType; inline uint qHash(const QVariant&) { Q_ASSERT(0); return 0; } inline uint qHash(const QDBusType&) { Q_ASSERT(0); return 0; } #endif and I could remember that this makes other problems. Peter _______________________________________________ Kde-buildsystem mailing list Kde-buildsystem@kde.org https://mail.kde.org/mailman/listinfo/kde-buildsystem