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