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

qtbase doesn't compile with a recent mingw (FILE_ID_128 redefinition)

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • P4: Low
    • 5.2.0 Alpha
    • 5.1.1
    • Core: I/O
    • None
    • Windows 7 64bit, mingw-64 4.8.1 seh rev4
    • e59a5f9fdcec5df2f54e88d75a75fcb4a2fe577b

    Description

      When trying to configure we get a compile error due to the redefition of the FILE_ID_128 struct.

      The struct itself has recently been added to MinGW: https://github.com/Alexpux/MinGW-w64/commit/eee0e6f45828fad4a80be7d557f71c213ed34590

      Error log when running configure:

      C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_win.cpp:578:3: error: conflicting declaration 'typedef struct _FILE_ID_128 FILE_ID_128'
       } FILE_ID_128, *PFILE_ID_128;
         ^
      In file included from c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\minwindef.h:146:0,
                       from c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\windef.h:8,
                       from c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\windows.h:69,
                       from C:\Qt\qtbase-opensource-src-5.1.1\include/QtCore/../../src/corelib/global/qt_windows.h:71,
                       from C:\Qt\qtbase-opensource-src-5.1.1\include/QtCore/qt_windows.h:1,
                       from C:\Qt\qtbase-opensource-src-5.1.1\mkspecs\win32-g++/qplatformdefs.h:63,
                       from C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemmetadata_p.h:56,
                       from C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_p.h:58,
                       from C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_win.cpp:42:
      c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\winnt.h:3767:7: error: 'FILE_ID_128' has a previous declaration as 'typedef struct FILE_ID_128 FILE_ID_128'
           } FILE_ID_128, *PFILE_ID_128;
             ^
      C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_win.cpp:578:17: error: conflicting declaration 'typedef struct _FILE_ID_128* PFILE_ID_128'
       } FILE_ID_128, *PFILE_ID_128;
                       ^
      In file included from c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\minwindef.h:146:0,
                       from c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\windef.h:8,
                       from c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\windows.h:69,
                       from C:\Qt\qtbase-opensource-src-5.1.1\include/QtCore/../../src/corelib/global/qt_windows.h:71,
                       from C:\Qt\qtbase-opensource-src-5.1.1\include/QtCore/qt_windows.h:1,
                       from C:\Qt\qtbase-opensource-src-5.1.1\mkspecs\win32-g++/qplatformdefs.h:63,
                       from C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemmetadata_p.h:56,
                       from C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_p.h:58,
                       from C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_win.cpp:42:
      c:\mingw\x64-4.8.1-win32-seh-rev4\mingw64\x86_64-w64-mingw32\include\winnt.h:3767:21: error: 'PFILE_ID_128' has a previous declaration as 'typedef struct FILE_ID_128* PFILE_ID_128'
           } FILE_ID_128, *PFILE_ID_128;
                           ^
      C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_win.cpp: In function 'QByteArray fileIdWin8(HANDLE)':
      C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_win.cpp:617:5
      6: error: 'FILE_ID_128' has no member named 'Identifier'
                   result += QByteArray((char *)infoEx.FileId.Identifier, sizeof(infoEx.FileId.Identifier)).toHex();
                                                              ^
      C:\Qt\qtbase-opensource-src-5.1.1/src/corelib/io/qfilesystemengine_win.cpp:617:8
      9: error: 'FILE_ID_128' has no member named 'Identifier'
                   result += QByteArray((char *)infoEx.FileId.Identifier, sizeof(infoEx.FileId.Identifier)).toHex();
               ^
      Makefile:350: recipe for target 'qfilesystemengine_win.o' failed
      mingw32-make: *** [qfilesystemengine_win.o] Error 1
      Building qmake failed, return code 2
      
      

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            kleint Friedemann Kleint
            peppe Giuseppe D'Angelo
            Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes