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

WIN64: 'Cannot open include file: 'unicode/ucal.h'' and 'unresolved external symbol ... QWinTimeZonePrivate' errors for QTimeZone test builds using mingw-w64 and MSVC

    XMLWordPrintable

Details

    • bc008afb0e3724a89890e9bd68451b1903bc8e17

    Description

      Hello, everyone,

       

      For builds using mingw-w64 and MSVC got errors:

      configure -v -prefix "%CD%\..\MSVC64RH" -opensource -confirm-license -release -force-asserts -developer-build -shared -platform win32-msvc -c++std c++11 -avx2 -no-pch -dbus-runtime -icu ICU_PREFIX="%CD%\..\..\libICU-61.1-dev\MSVC64RH" -zlib ZLIB_PREFIX="%CD%\..\..\libZLIB-1.2.11\MSVC64RH" -openssl-linked OPENSSL_PREFIX="%CD%\..\..\libOPENSSL-1.1.0g\MSVC64RH" -opengl dynamic -skip qtwebengine && jom
      
      <snip>
      
      cd qtimezone\ && ( if not exist Makefile C:\libQT-5.11-dev\build\qtbase\bin\qmake.exe -o Makefile C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\qtimezone\qtimezone.pro ) && C:\Windows\jom.exe -f Makefile
              C:\Windows\jom.exe -f Makefile.Release
              cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -O2 -MD -utf-8 -EHsc -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -DUNICODE -D_UNICODE -DWIN32 -DWIN64 -DQT_USE_ICU -DQT_NO_DEBUG -DQT_FORCE_ASSERTS -DQT_TESTLIB_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR="\"C:/libQT-5.11-dev/build/qtbase/tests/auto/corelib/tools/qtimezone\"" -DNDEBUG -I. -I..\..\..\..\..\include\QtCore\5.11.0 -I..\..\..\..\..\include\QtCore\5.11.0\QtCore -I..\..\..\..\..\include -I..\..\..\..\..\include\QtTest -I..\..\..\..\..\include\QtCore -I.moc\release -I..\..\..\..\..\mkspecs\win32-msvc -Fo.obj\release\ @C:\Users\test\AppData\Local\Temp\tst_qtimezone.obj.7896.15.jom
      tst_qtimezone.cpp
      C:\libqt-5.11-dev\build\qtbase\include\qtcore\5.11.0\qtcore\private\../../../../../src/corelib/tools/qtimezoneprivate_p.h(60): fatal error C1083: Cannot open include file: 'unicode/ucal.h': No such file or directory
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\qtimezone\Makefile.Release [.obj\release\tst_qtimezone.obj] Error 2
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\qtimezone\Makefile [release] Error 2
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\Makefile [sub-qtimezone-make_first] Error 2
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\Makefile [sub-tools-make_first] Error 2
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\Makefile [sub-corelib-make_first] Error 2
      jom: C:\libQT-5.11-dev\build\qtbase\tests\Makefile [sub-auto-make_first] Error 2
      jom: C:\libQT-5.11-dev\build\qtbase\Makefile [sub-tests-make_first] Error 2
      jom: C:\libQT-5.11-dev\build\Makefile [module-qtbase-make_first] Error 2
      

       

      Although it's odd, that for tests

      qtbase\tests\auto\corelib\tools\qcollator

      qtbase\tests\auto\corelib\tools\qstring

      condition

      qtConfig(icu): DEFINES += QT_USE_ICU

      works fine to enable ICU support, while for

      qtbase\tests\auto\corelib\tools\qtimezone

      it fails.

      Remembering, that similar error was reported for -QTBUG-62944- and fixed with Change #208026, tried to add condition

      QMAKE_USE_PRIVATE += icu
      

      into file 'qtbase/tests/auto/corelib/tools/qtimezone/qtimezone.pro', and got errors:

              cd qtimezone\ && ( if not exist Makefile C:\libQT-5.11-dev\build\qtbase\bin\qmake.exe -o Makefile C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\qtimezone\qtimezone.pro ) && C:\Windows\jom.exe -f Makefile
              C:\Windows\jom.exe -f Makefile.Release
              link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:release\tst_qtimezone.exe @C:\Users\test\AppData\Local\Temp\tst_qtimezone.exe.10188.63.jom
      tst_qtimezone.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QWinTimeZonePrivate::QWinTimeZonePrivate(void)" (__imp_??0QWinTimeZonePrivate@@QEAA@XZ) referenced in function "private: void __cdecl tst_QTimeZone::winTest(void)" (?winTest@tst_QTimeZone@@AEAAXXZ)
      tst_qtimezone.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl QWinTimeZonePrivate::QWinTimeZonePrivate(class QByteArray const &)" (__imp_??0QWinTimeZonePrivate@@QEAA@AEBVQByteArray@@@Z) referenced in function "private: void __cdecl tst_QTimeZone::winTest(void)" (?winTest@tst_QTimeZone@@AEAAXXZ)
      tst_qtimezone.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual __cdecl QWinTimeZonePrivate::~QWinTimeZonePrivate(void)" (__imp_??1QWinTimeZonePrivate@@UEAA@XZ) referenced in function "private: void __cdecl tst_QTimeZone::winTest(void)" (?winTest@tst_QTimeZone@@AEAAXXZ)
      tst_qtimezone.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual class QString __cdecl QWinTimeZonePrivate::displayName(enum QTimeZone::TimeType,enum QTimeZone::NameType,class QLocale const &)const " (__imp_?displayName@QWinTimeZonePrivate@@UEBA?AVQString@@W4TimeType@QTimeZone@@W4NameType@4@AEBVQLocale@@@Z) referenced in function "private: void __cdecl tst_QTimeZone::winTest(void)" (?winTest@tst_QTimeZone@@AEAAXXZ)
      tst_qtimezone.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: virtual class QString __cdecl QWinTimeZonePrivate::abbreviation(__int64)const " (__imp_?abbreviation@QWinTimeZonePrivate@@UEBA?AVQString@@_J@Z) referenced in function "private: void __cdecl tst_QTimeZone::winTest(void)" (?winTest@tst_QTimeZone@@AEAAXXZ)
      release\tst_qtimezone.exe : fatal error LNK1120: 5 unresolved externals
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\qtimezone\Makefile.Release [release\tst_qtimezone.exe] Error 1120
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\qtimezone\Makefile [release] Error 2
      jom: C:\libQT-5.11-dev\build\qtbase\tests\auto\corelib\tools\Makefile [sub-qtimezone-make_first] Error 2
      

      The source of error is missing 'QWinTimeZonePrivate' symbol in 'Qt5Cored.dll' binary, which is a result of recently merged Change #217191.

       

      Reproduced for:

      • builds using mingw-w64 and MSVC with '-developer-build' flag,

      not reproduced for:

      • builds using mingw-w64 and MSVC without '-developer-build' flag.

       

       

      Best,

      Alexander

       

      Attachments

        Issue Links

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

          Activity

            People

              Eddy Edward Welbourne
              sav sav
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Gerrit Reviews

                  There are no open Gerrit changes