Qt 6.3.2 compilation issue
-
I want to build
Qt 6.3.2but it has a lot of issues during the compilation process.I use the following libs to build with Qt:
- MySQL (mysql-8.0.30)
- OpenSSL (openssl-1.1.1q)
- Zlib (zlib-win-build-1.2.12)
My cmake batch command:
cmake.exe --trace-expand --trace-redirect=cmake.trace -DCMAKE_BUILD_TYPE=%qtBuildMode% -DBUILD_SHARED_LIBS=OFF -DQT_BUILD_EXAMPLES=OFF -DCMAKE_PREFIX_PATH="C:\\LLVM\\x64\\static\\debug;" -DZLIB_INCLUDE_DIR="C:\\ZipDev\\zlib-win-build-1.2.12" -DZLIB_LIBRARY="C:\\ZipDev\\zlib-win-build-1.2.12\\build-VS2022-MT\\x64\\Debug\\libz-static.lib" -DZLIB_USE_STATIC_LIBS=ON -DINPUT_static_runtime=ON -DFEATURE_ltcg=OFF -DBUILD_qtwebengine=OFF -DOPENSSL_ROOT_DIR="%qtBuildOpenSSLRootPath%" -DFEATURE_openssl_linked=ON -DOPENSSL_USE_STATIC_LIBS=TRUE -DOPENSSL_MSVC_STATIC_RT=TRUE -DINPUT_sql_mysql=ON -DMySQL_INCLUDE_DIR="%qtBuildMySqlIncludeDirsPath%" -DMySQL_LIBRARY="%qtBuildMySqlLibsPath%" -DCMAKE_INSTALL_PREFIX="%qtBuildPath%" -G Ninja %qtBuildSourcePath%I have fixed many of them but still need to fix this one.
[7197/9220] Linking CXX executable qtbase\bin\assistant.exe FAILED: qtbase/bin/assistant.exe cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=qttools\src\assistant\assistant\CMakeFiles\assistant.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\mt.exe --manifests -- C:\PROGRA~2\MICROS~3\2019\ENTERP~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\assistant.rsp /out:qtbase\bin\assistant.exe /implib:qttools\src\assistant\assistant\assistant.lib /pdb:qtbase\bin\assistant.pdb /version:0.0 /machine:x64 /debug /subsystem:windows -DYNAMICBASE -NXCOMPAT -LARGEADDRESSAWARE && cd ." LINK: command "C:\PROGRA~2\MICROS~3\2019\ENTERP~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo @CMakeFiles\assistant.rsp /out:qtbase\bin\assistant.exe /implib:qttools\src\assistant\assistant\assistant.lib /pdb:qtbase\bin\assistant.pdb /version:0.0 /machine:x64 /debug /subsystem:windows -DYNAMICBASE -NXCOMPAT -LARGEADDRESSAWARE /MANIFEST /MANIFESTFILE:qtbase\bin\assistant.exe.manifest" failed (exit code 1120) with the following output: Creating library qttools\src\assistant\assistant\assistant.lib and object qttools\src\assistant\assistant\assistant.exp mysqlclientMTd.lib(charset.obj) : error LNK2019: unresolved external symbol __std_init_once_link_alternate_names_and_abort referenced in function "void __cdecl std::call_once<void (__cdecl&)(void)>(struct std::once_flag &,void (__cdecl&)(void))" (??$call_once@A6AXXZ$$V@std@@YAXAEAUonce_flag@0@A6AXXZ@Z) mysqlclientMTd.lib(my_malloc.obj) : error LNK2001: unresolved external symbol __std_init_once_link_alternate_names_and_abort qtbase\bin\assistant.exe : fatal error LNK1120: 1 unresolved externals [7206/9220] Building CXX object qttools\src\designer\src\designer\CMakeFiles\designer.dir\cmake_pch.cxx.obj ninja: build stopped: subcommand failed.Any ideas what could cause such error? Thank you.
-
I understand if you want to compile Qt, the libraries, static. But why are you building tools like assistant using that as well?
If you need assistant and other tools, use the normal approach of dynamic libraries.
Yes, it's a bit tricky. I think, I know how to fix this issue.
I will reply tomorrow reqarding the solution. Thanks. -
Hello!
This issue with
mysqlclientMTd.liboccurs due to the mismatch beween compiler versions as described here: https://developercommunity.visualstudio.com/t/__imp___std_init_once_complete-unresolve/1684365. This library was compiled withVisual Studio 2022compiler.
I usedx64 Native Tools Command Prompt for VS 2019to buildQt 6.3.2which means it could not find this new function:__std_init_once_link_alternate_names_and_abort. This function is from STL’s import library:msvcprt.liband was only added in theVS 2022version: 17.2.5. So, I fixed this error by rebuilding thismysqlclientMTd.libforVS 2019compiler, since I needQt 6.3.2forVS 2019compiler.Also, I have got another error, at this time with
libz-static.libin Release build:C:\QtBuild\qt-everywhere-src-6.3.2>cmake --build . [792/9220] Linking CXX executable qtbase\bin\rcc.exe FAILED: qtbase/bin/rcc.exe cmd.exe /C "cd . && "C:\Program Files\CMake\bin\cmake.exe" -E vs_link_exe --intdir=qtbase\src\tools\rcc\CMakeFiles\rcc.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100220~1.0\x64\mt.exe --manifests -- C:\PROGRA~2\MICROS~3\2019\ENTERP~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo qtbase\src\tools\rcc\CMakeFiles\rcc.dir\rcc_autogen\mocs_compilation.cpp.obj qtbase\src\tools\rcc\CMakeFiles\rcc.dir\rcc_resource.rc.res qtbase\src\tools\rcc\CMakeFiles\rcc.dir\main.cpp.obj qtbase\src\tools\rcc\CMakeFiles\rcc.dir\rcc.cpp.obj /out:qtbase\bin\rcc.exe /implib:qtbase\src\tools\rcc\rcc.lib /pdb:qtbase\bin\rcc.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console -DYNAMICBASE -NXCOMPAT -LARGEADDRESSAWARE -OPT:REF -OPT:ICF -GUARD:CF qtbase\lib\Qt6Core.lib qtbase\lib\Qt6Core.lib C:\\ZipDev\\zlib-win-build-1.2.12\\build-VS2022-MT\\x64\\Release\\libz-static.lib synchronization.lib mpr.lib userenv.lib advapi32.lib authz.lib kernel32.lib netapi32.lib ole32.lib shell32.lib user32.lib uuid.lib version.lib winmm.lib ws2_32.lib runtimeobject.lib qtbase\lib\Qt6BundledPcre2.lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ." LINK: command "C:\PROGRA~2\MICROS~3\2019\ENTERP~1\VC\Tools\MSVC\1429~1.301\bin\Hostx64\x64\link.exe /nologo qtbase\src\tools\rcc\CMakeFiles\rcc.dir\rcc_autogen\mocs_compilation.cpp.obj qtbase\src\tools\rcc\CMakeFiles\rcc.dir\rcc_resource.rc.res qtbase\src\tools\rcc\CMakeFiles\rcc.dir\main.cpp.obj qtbase\src\tools\rcc\CMakeFiles\rcc.dir\rcc.cpp.obj /out:qtbase\bin\rcc.exe /implib:qtbase\src\tools\rcc\rcc.lib /pdb:qtbase\bin\rcc.pdb /version:0.0 /machine:x64 /INCREMENTAL:NO /subsystem:console -DYNAMICBASE -NXCOMPAT -LARGEADDRESSAWARE -OPT:REF -OPT:ICF -GUARD:CF qtbase\lib\Qt6Core.lib qtbase\lib\Qt6Core.lib C:\\ZipDev\\zlib-win-build-1.2.12\\build-VS2022-MT\\x64\\Release\\libz-static.lib synchronization.lib mpr.lib userenv.lib advapi32.lib authz.lib kernel32.lib netapi32.lib ole32.lib shell32.lib user32.lib uuid.lib version.lib winmm.lib ws2_32.lib runtimeobject.lib qtbase\lib\Qt6BundledPcre2.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\rcc.exe.manifest" failed (exit code 1257) with the following output: libz-static.lib(compress.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance fatal error C1900: Il mismatch between 'P1' version '20211014' and 'P2' version '20210202' LINK : fatal error LNK1257: code generation failed [800/9220] Automatic MOC for target Network AutoMoc: C:/QtBuild/qt-everywhere-src-6.3.2/qtbase/src/network/access/qnetworkaccessdebugpipebackend_p.h(0:1): note: No relevant classes found. No output generated. [801/9220] Building CXX object qtbase\src\tools\qlalr\CMakeFiles\qlalr.dir\cppgenerator.cpp.obj ninja: build stopped: subcommand failed. C:\QtBuild\qt-everywhere-src-6.3.2>So, to fix this error:
fatal error C1900: Il mismatch between 'P1' version '20211014' and 'P2' version '20210202', I have to build thelibz-static.libforVS 2019compiler as well. Now, everything compiles (debug/release) without any error. The issue is resolved.