Details
-
Bug
-
Resolution: Done
-
P3: Somewhat important
-
6.2.3
-
None
-
-
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.