Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Clang-cl + lld-link + Qt 6.11: undefined symbol QConstIterator<QMetaSequence> when iterating QMetaSequence::Iterable
Qt 6.11 is out! See what's new in the release blog

Clang-cl + lld-link + Qt 6.11: undefined symbol QConstIterator<QMetaSequence> when iterating QMetaSequence::Iterable

Scheduled Pinned Locked Moved Unsolved General and Desktop
2 Posts 2 Posters 150 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    Lan-Friend
    wrote last edited by
    #1

    Hi,

    I am encountering a linking issue with Qt 6.11.0 (msvc2022_64 official build) when using clang-cl and lld-link on Windows.

    The problem only appears under a specific combination of conditions involving QSequentialIterable and iterator usage on QMetaSequence::Iterable.


    Environment

    • Qt: 6.11.0 (msvc2022_64 official binary)
    • Compiler: clang-cl 22.1.7
    • Linker: lld-link
    • Build system: CMake + Ninja
    • C++ standard: C++23
    • OS: Windows 11

    Minimal Context

    This code alone works correctly:

    #include <QCoreApplication>
    #include <QVariant>
    #include <QMetaSequence>
    
    void test()
    {
        QVariant v = QVariant::fromValue(QList<int>{1, 2, 3});
        auto iterable = v.value<QMetaSequence::Iterable>();
    
        // No iteration → OK
    }
    

    Issue Reproduction

    The issue appears when iterator APIs on QMetaSequence::Iterable are used in a translation unit that includes <QSequentialIterable>.

    (1) QSequentialIterable is included

    #include <QSequentialIterable>
    

    (2) iterator APIs are actually used

    For example:

    for (auto it = iterable.constBegin(); it != iterable.constEnd(); ++it)
    {
        qDebug() << *it;
    }
    

    or equivalent begin()/end() or range-based for loops.


    Important Clarification

    The issue does NOT occur if:

    • <QSequentialIterable> is included but no iterator API is used

    The issue also does NOT occur if:

    • iterator APIs are used but <QSequentialIterable> is NOT included

    It only triggers when:

    <QSequentialIterable> + iterator usage on QMetaSequence::Iterable
    

    are combined under clang-cl + lld-link.


    Error

    lld-link: error: undefined symbol: __declspec(dllimport) public: __cdecl QConstIterator<class QMetaSequence>::QConstIterator<class QMetaSequence>(struct QConstIterator<class QMetaSequence> &&)
    >>> referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator<class QtMetaContainerPrivate::SequentialConstIterator, void> __cdecl QtMetaContainerPrivate::Sequence::constBegin(void) const)
    >>> referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator<class QtMetaContainerPrivate::SequentialConstIterator, void> __cdecl QtMetaContainerPrivate::Sequence::constBegin(void) const)
    >>> referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator<class QtMetaContainerPrivate::SequentialConstIterator, void> __cdecl QtMetaContainerPrivate::Sequence::constEnd(void) const)
    >>> referenced 1 more times
    

    Observations

    • Works correctly with MSVC linker (link.exe)
    • Fails only with clang-cl + lld-link
    • Removing <QSequentialIterable> appears to resolve the issue in my environment.
    • QMetaSequence::Iterable itself works as expected in isolation
    • The issue is reproducible with iterator APIs only when QSequentialIterable is included

    Question

    Is this a known ABI / export issue in Qt 6.11 MSVC builds when using clang-cl + lld-link?

    Is the combination of <QSequentialIterable> and QMetaSequence::Iterable iterator APIs expected to trigger unresolved symbols in this configuration?

    Any clarification or workaround would be appreciated.

    Christian EhrlicherC 1 Reply Last reply
    0
    • L Lan-Friend

      Hi,

      I am encountering a linking issue with Qt 6.11.0 (msvc2022_64 official build) when using clang-cl and lld-link on Windows.

      The problem only appears under a specific combination of conditions involving QSequentialIterable and iterator usage on QMetaSequence::Iterable.


      Environment

      • Qt: 6.11.0 (msvc2022_64 official binary)
      • Compiler: clang-cl 22.1.7
      • Linker: lld-link
      • Build system: CMake + Ninja
      • C++ standard: C++23
      • OS: Windows 11

      Minimal Context

      This code alone works correctly:

      #include <QCoreApplication>
      #include <QVariant>
      #include <QMetaSequence>
      
      void test()
      {
          QVariant v = QVariant::fromValue(QList<int>{1, 2, 3});
          auto iterable = v.value<QMetaSequence::Iterable>();
      
          // No iteration → OK
      }
      

      Issue Reproduction

      The issue appears when iterator APIs on QMetaSequence::Iterable are used in a translation unit that includes <QSequentialIterable>.

      (1) QSequentialIterable is included

      #include <QSequentialIterable>
      

      (2) iterator APIs are actually used

      For example:

      for (auto it = iterable.constBegin(); it != iterable.constEnd(); ++it)
      {
          qDebug() << *it;
      }
      

      or equivalent begin()/end() or range-based for loops.


      Important Clarification

      The issue does NOT occur if:

      • <QSequentialIterable> is included but no iterator API is used

      The issue also does NOT occur if:

      • iterator APIs are used but <QSequentialIterable> is NOT included

      It only triggers when:

      <QSequentialIterable> + iterator usage on QMetaSequence::Iterable
      

      are combined under clang-cl + lld-link.


      Error

      lld-link: error: undefined symbol: __declspec(dllimport) public: __cdecl QConstIterator<class QMetaSequence>::QConstIterator<class QMetaSequence>(struct QConstIterator<class QMetaSequence> &&)
      >>> referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator<class QtMetaContainerPrivate::SequentialConstIterator, void> __cdecl QtMetaContainerPrivate::Sequence::constBegin(void) const)
      >>> referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator<class QtMetaContainerPrivate::SequentialConstIterator, void> __cdecl QtMetaContainerPrivate::Sequence::constBegin(void) const)
      >>> referenced by Test\CMakeFiles\Test.dir\Test.cpp.obj:(public: class QTaggedIterator<class QtMetaContainerPrivate::SequentialConstIterator, void> __cdecl QtMetaContainerPrivate::Sequence::constEnd(void) const)
      >>> referenced 1 more times
      

      Observations

      • Works correctly with MSVC linker (link.exe)
      • Fails only with clang-cl + lld-link
      • Removing <QSequentialIterable> appears to resolve the issue in my environment.
      • QMetaSequence::Iterable itself works as expected in isolation
      • The issue is reproducible with iterator APIs only when QSequentialIterable is included

      Question

      Is this a known ABI / export issue in Qt 6.11 MSVC builds when using clang-cl + lld-link?

      Is the combination of <QSequentialIterable> and QMetaSequence::Iterable iterator APIs expected to trigger unresolved symbols in this configuration?

      Any clarification or workaround would be appreciated.

      Christian EhrlicherC Offline
      Christian EhrlicherC Offline
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote last edited by
      #2

      @Lan-Friend said in Clang-cl + lld-link + Qt 6.11: undefined symbol QConstIterator<QMetaSequence> when iterating QMetaSequence::Iterable:

      Is this a known ABI / export issue in Qt 6.11 MSVC builds when using clang-cl + lld-link?

      No, but clang-cl is not officially supported: https://doc.qt.io/qt-6/supported-platforms.html#windows
      You might create a bug report about it though.

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      1

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved