Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-101176

Linker error when AVX2 is disabled in core but enabled in Qt3D

    XMLWordPrintable

Details

    • Windows
    • 3fce3beeb2 (qt/qt3d/dev) 649f75167d (qt/qt3d/6.2) b8e767be56 (qt/qt3d/6.3) 649f75167d (qt/tqtc-qt3d/6.2) b8e767be56 (qt/tqtc-qt3d/6.3.0) 649f75167d (qt/qt3d/6.2) 649f75167d (qt/tqtc-qt3d/6.2) b8e767be56 (qt/qt3d/6.3.1) b8e767be56 (qt/tqtc-qt3d/6.3.1)

    Description

      I'm not sure if this should be supported or not. But it may be better if Qt build system catches this issue gracefully, so I'm reporting it here.

      I get an undefined symbol error when AVX2 is disabled in core, but enabled in Qt3D:

      LINK: command "C:\BDA\ci\LLVM-13.0.1\bin\lld-link.exe qt3d\src\logic\CMakeFiles\3DLogic.dir\3DLogic_autogen\mocs_compilation.cpp.obj qt3d\src\logic\CMakeFiles\3DLogic.dir\cmake_pch.cxx.obj qt3d\src\logic\CMakeFiles\3DLogic.dir\3DLogic_resource.rc.res qt3d\src\logic\CMakeFiles\3DLogic.dir\callbackjob.cpp.obj qt3d\src\logic\CMakeFiles\3DLogic.dir\executor.cpp.obj qt3d\src\logic\CMakeFiles\3DLogic.dir\handler.cpp.obj qt3d\src\logic\CMakeFiles\3DLogic.dir\manager.cpp.obj qt3d\src\logic\CMakeFiles\3DLogic.dir\qframeaction.cpp.obj qt3d\src\logic\CMakeFiles\3DLogic.dir\qlogicaspect.cpp.obj /out:qtbase\bin\Qt63DLogicd.dll /implib:qtbase\lib\Qt63DLogicd.lib /pdb:qtbase\bin\Qt63DLogicd.pdb /dll /version:6.2 /machine:x64 /debug -DYNAMICBASE -NXCOMPAT qtbase\lib\Qt63DCored.lib qtbase\lib\Qt6Networkd.lib ws2_32.lib qtbase\lib\Qt6Guid.lib d3d11.lib dxgi.lib dxguid.lib qtbase\lib\Qt6Concurrentd.lib qtbase\lib\Qt6Cored.lib mpr.lib userenv.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTFILE:qtbase\bin\Qt63DLogicd.dll.manifest" failed (exit code 1) with the following output:360lld-link: error: undefined symbol: __declspec(dllimport) public: static void * __cdecl Qt3DCore::AlignedAllocator::allocate(unsigned int)361>>> referenced by C:\BDA\bld\XTJyb_7r\0\BioDataAnalysis\qt\qt3d\src\core\resources\qresourcemanager_p.h:305362>>>               qt3d\src\logic\CMakeFiles\3DLogic.dir\handler.cpp.obj:(private: void __cdecl Qt3DCore::ArrayAllocatingPolicy<class Qt3DLogic::Logic::Handler>::allocateBucket(void))363lld-link: error: undefined symbol: __declspec(dllimport) public: static void __cdecl Qt3DCore::AlignedAllocator::release(void *)364>>> referenced by C:\BDA\bld\XTJyb_7r\0\BioDataAnalysis\qt\qt3d\src\core\resources\qresourcemanager_p.h:327365>>>               qt3d\src\logic\CMakeFiles\3DLogic.dir\manager.cpp.obj:(private: void __cdecl Qt3DCore::ArrayAllocatingPolicy<class Qt3DLogic::Logic::Handler>::deallocateBuckets(void))
      

      It seems this is related to the following cmake flags:

      -DFEATURE_avx2=OFF -DFEATURE_qt3d_simd_avx2=ON
      

      The build was performed with ClangCl (also called clang-cl) on MSVC using Microsoft VS2019 v16.11.10 (current latest) with the upstream LLVM ClangCl 13.0.1. I know that ClangCl is not supported but I think the issue may not be related specifically to ClangCl.

      Attachments

        For Gerrit Dashboard: QTBUG-101176
        # Subject Branch Project Status CR V

        Activity

          People

            semlanik Alexey Edelev
            emmenlau Mario Emmenlauer
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes