windows build
Peter Kümmel
syntheticpp at gmx.net
Tue Jun 27 10:29:25 CEST 2006
Thiago Macieira wrote:
> Peter Kümmel wrote:
>> I've tried to reproduce the linker error without success.
>> (two dlls, one links against the other, template A, a class
>> which inherits from A, ...)
>> Maybe there is only one constellation which reproduce it.
>>
>> But even if I could reproduce it, it only shows that it is a compiler
>> bug, because I don't see any reason why there must be a linker error.
>>
>> But I haven't found a bugreport at
>> http://connect.microsoft.com/VisualStudio/feedback/
>>
>>
>> So the best we can do is to find a work-around. And this is maybe
>> the explicit export of the template instantiation.
>
> It looks like this is being caused by the KDE-side of things. Why should
> kauthorized.obj define the QList<QVariant>::isEmpty() and *export* it?
> That's an inline method defined in qlist.h.
>
> More interestingly, kauthorized.cpp does not use QList<QVariant>,
> QVariantList or QVariant anywhere...
kauthorized.cpp includes kconfig.h which includes kconfigbase.h:
template <typename T>
inline QList<T> KConfigBase::readEntry( const char* pKey, const QList<T>& aDefault) const
{
QVariant::Type wanted = QVariant(T()).type();
#if KCONFIG_QVARIANT_CHECK
ConversionCheck::to_QVariant<T>();
ConversionCheck::to_QString<T>();
#else
kcbError(!QVariant(QVariant::String).canConvert(wanted))
<< "QString cannot convert to \"" << QVariant::typeToName(wanted)
<< "\" information will be lost" << endl;
#endif
if (!hasKey(pKey))
return aDefault;
QList<QVariant> vList;
if (!aDefault.isEmpty()) {
foreach (T aValue, aDefault)
vList.append( aValue );
}
vList = readEntry( pKey, vList );
QList<T> list;
if (!vList.isEmpty()) {
and kauthorized.cpp uses readEntry() this must be the reason.
More information about the Kde-buildsystem
mailing list