Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Compiling Qt with seqan on Windows



  • Hi,

    I m trying to compile a "hello world" application with Qt and seqan. Seqan is a C++14 header only library designed to perform DNA analysis. It supposed to work pretty well on Windows. And actually I can compile and run the code on Linux.

    I didn't success to compile with both mingw32 5.3 and MSVC 64bits 2015.
    My source code avaible there : https://github.com/dridk/seqanwinqt

    bellow are my compile output for both compier. With MSVC, it seems a UNICODE problem ...
    So, I will be very glade if you success to compile my hello word !

    Using mingw 5.3 32 bits :

    D:/Qt/Tools/mingw530_32/bin/mingw32-make -f Makefile.Debug
    mingw32-make[1]: Entering directory 'C:/Users/home/Documents/build-seqanwinqt-Desktop_Qt_5_9_1_MinGW_32bit-Debug'
    g++ -c -fno-keep-inline-dllexport -pipe -g -std=gnu++1y -Wextra -Wall -W -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_NEEDS_QMAIN -I..\seqanwinqt -I. -ID:\Qt\5.9.1\mingw53_32\include -ID:\Qt\5.9.1\mingw53_32\include\QtGui -ID:\Qt\5.9.1\mingw53_32\include\QtANGLE -ID:\Qt\5.9.1\mingw53_32\include\QtCore -Idebug -ID:\Qt\5.9.1\mingw53_32\mkspecs\win32-g++  -o debug\main.o ..\seqanwinqt\main.cpp
    In file included from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/crtdefs.h:10:0,
                     from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/wchar.h:9,
                     from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/cwchar:44,
                     from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/bits/postypes.h:40,
                     from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/iosfwd:40,
                     from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/ios:38,
                     from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/ostream:38,
                     from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/c++/iostream:39,
                     from ..\seqanwinqt\main.cpp:1:
    ..\seqanwinqt/seqan/platform.h:290:17: error: declaration does not declare anything [-fpermissive]
     typedef int64_t __int64;   // nolint
                     ^
    ..\seqanwinqt/seqan/platform.h:292:17: error: multiple types in one declaration
     typedef int32_t __int32;   // nolint
                     ^
    ..\seqanwinqt/seqan/platform.h:292:17: error: declaration does not declare anything [-fpermissive]
    ..\seqanwinqt/seqan/platform.h:294:17: error: declaration does not declare anything [-fpermissive]
     typedef int16_t __int16;   // nolint
                     ^
    ..\seqanwinqt/seqan/platform.h:296:16: error: multiple types in one declaration
     typedef int8_t __int8;     // nolint
                    ^
    ..\seqanwinqt/seqan/platform.h:296:16: error: declaration does not declare anything [-fpermissive]
    In file included from ..\seqanwinqt/seqan/basic/basic_debug.h:52:0,
                     from ..\seqanwinqt/seqan/basic.h:49,
                     from ..\seqanwinqt\seqan/sequence.h:74,
                     from ..\seqanwinqt\main.cpp:3:
    ..\seqanwinqt/seqan/basic/debug_test_system.h: In function 'const char* seqan::ClassTest::tempFileName()':
    ..\seqanwinqt/seqan/basic/debug_test_system.h:709:31: error: too many arguments to function 'int mkdir(const char*)'
         mkdir(fileNameBuffer, 0777);
                                   ^
    In file included from D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/unistd.h:10:0,
                     from ..\seqanwinqt/seqan/basic/debug_test_system.h:165,
                     from ..\seqanwinqt/seqan/basic/basic_debug.h:52,
                     from ..\seqanwinqt/seqan/basic.h:49,
                     from ..\seqanwinqt\seqan/sequence.h:74,
                     from ..\seqanwinqt\main.cpp:3:
    D:/Qt/Tools/mingw530_32/i686-w64-mingw32/include/io.h:271:15: note: declared here
       int __cdecl mkdir (const char *) __MINGW_ATTRIB_DEPRECATED_MSVC2005;
                   ^
    ..\seqanwinqt\main.cpp: In function 'int main(int, char**)':
    ..\seqanwinqt\main.cpp:10:27: error: expected primary-expression before ';' token
         qDebug()<<COMPILER_GCC;
                               ^
    ..\seqanwinqt\main.cpp: At global scope:
    ..\seqanwinqt\main.cpp:5:14: warning: unused parameter 'argc' [-Wunused-parameter]
     int main(int argc, char *argv[])
                  ^
    ..\seqanwinqt\main.cpp:5:31: warning: unused parameter 'argv' [-Wunused-parameter]
     int main(int argc, char *argv[])
                                   ^
    Makefile.Debug:297: recipe for target 'debug/main.o' failed
    mingw32-make[1]: *** [debug/main.o] Error 1
    mingw32-make: *** [debug] Error 2
    mingw32-make[1]: Leaving directory 'C:/Users/home/Documents/build-seqanwinqt-Desktop_Qt_5_9_1_MinGW_32bit-Debug'
    Makefile:36: recipe for target 'debug' failed
    20:52:05: The process "D:\Qt\Tools\mingw530_32\bin\mingw32-make.exe" exited with code 2.
    Error while building/deploying project seqanwinqt (kit: Desktop Qt 5.9.1 MinGW 32bit)
    When executing step "Make"
    

    Using MSVC2015 64 bits

    20:55:05: The process "D:\Qt\Tools\QtCreator\bin\jom.exe" exited normally.
    20:55:05: Starting: "D:\Qt\Tools\QtCreator\bin\jom.exe" 
    	D:\Qt\Tools\QtCreator\bin\jom.exe -f Makefile.Release
    	cl -c -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -EHsc -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DNDEBUG -I..\seqanwinqt -I. -ID:\Qt\5.9.1\msvc2015_64\include -ID:\Qt\5.9.1\msvc2015_64\include\QtGui -ID:\Qt\5.9.1\msvc2015_64\include\QtANGLE -ID:\Qt\5.9.1\msvc2015_64\include\QtCore -Irelease -ID:\Qt\5.9.1\msvc2015_64\mkspecs\win32-msvc -Forelease\ @C:\Users\home\AppData\Local\Temp\main.obj.5156.15.jom
    main.cpp
    ..\seqanwinqt\seqan/basic/debug_test_system.h(604): warning C4267: '='ÿ: conversion de 'size_t' en 'int', perte possible de donn‚es
    ..\seqanwinqt\seqan/basic/debug_test_system.h(677): error C2664: 'DWORD GetTempPathW(DWORD,LPWSTR)'ÿ: impossible de convertir l'argument 2 de 'char [1000]' en 'LPWSTR'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(677): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction
    ..\seqanwinqt\seqan/basic/debug_test_system.h(688): error C2664: 'UINT GetTempFileNameW(LPCWSTR,LPCWSTR,UINT,LPWSTR)'ÿ: impossible de convertir l'argument 1 de 'char [1000]' en 'LPCWSTR'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(688): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction
    ..\seqanwinqt\seqan/basic/debug_test_system.h(696): error C2664: 'BOOL DeleteFileW(LPCWSTR)'ÿ: impossible de convertir l'argument 1 de 'char [1000]' en 'LPCWSTR'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(696): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction
    ..\seqanwinqt\seqan/basic/debug_test_system.h(734): error C2589: '('ÿ: jeton non conforme … droite de '::'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(734): error C2059: erreur de syntaxeÿ: '::'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(735): error C2589: '('ÿ: jeton non conforme … droite de '::'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(735): error C2059: erreur de syntaxeÿ: '::'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(782): error C2664: 'HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)'ÿ: impossible de convertir l'argument 1 de 'const char *' en 'LPCWSTR'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(782): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction
    ..\seqanwinqt\seqan/basic/debug_test_system.h(787): error C2678: '+' binaireÿ: aucun op‚rateur trouv‚ qui accepte un op‚rande de partie gauche de type 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' (ou il n'existe pas de conversion acceptable)
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qpoint.h(358): note: est peut-ˆtre 'const QPointF operator +(const QPointF &,const QPointF &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qpoint.h(169): note: ou       'const QPoint operator +(const QPoint &,const QPoint &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstringlist.h(231): note: ou       'QStringList operator +(const QList<QString> &,const QStringList &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1750): note: ou       'QString operator +(QChar,const QStringRef &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1748): note: ou       'QString operator +(const QStringRef &,QChar)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1746): note: ou       'QString operator +(const QStringRef &,const QStringRef &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1744): note: ou       'QString operator +(QLatin1String,const QStringRef &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1742): note: ou       'QString operator +(const QStringRef &,QLatin1String)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1740): note: ou       'QString operator +(const QStringRef &,const QString &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1738): note: ou       'QString operator +(const QString &,const QStringRef &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1313): note: ou       'const QString operator +(const QString &,const QByteArray &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1311): note: ou       'const QString operator +(const QByteArray &,const QString &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1309): note: ou       'const QString operator +(const QString &,char)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1307): note: ou       'const QString operator +(char,const QString &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1305): note: ou       'const QString operator +(const char *,const QString &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1303): note: ou       'const QString operator +(const QString &,const char *)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1300): note: ou       'const QString operator +(QChar,const QString &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1298): note: ou       'const QString operator +(const QString &,QChar)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qstring.h(1296): note: ou       'const QString operator +(const QString &,const QString &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(639): note: ou       'const QByteArray operator +(char,const QByteArray &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(637): note: ou       'const QByteArray operator +(const char *,const QByteArray &)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(635): note: ou       'const QByteArray operator +(const QByteArray &,char)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(633): note: ou       'const QByteArray operator +(const QByteArray &,const char *)'
    D:\Qt\5.9.1\msvc2015_64\include\QtCore/qbytearray.h(631): note: ou       'const QByteArray operator +(const QByteArray &,const QByteArray &)'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(787): note: lors de la tentative de mise en correspondance de la liste des arguments '(std::basic_string<char,std::char_traits<char>,std::allocator<char>>, WCHAR [260])'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(788): error C2664: 'int strcmp(const char *,const char *)'ÿ: impossible de convertir l'argument 1 de 'WCHAR [260]' en 'const char *'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(788): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction
    ..\seqanwinqt\seqan/basic/debug_test_system.h(790): error C2664: 'BOOL DeleteFileW(LPCWSTR)'ÿ: impossible de convertir l'argument 1 de 'const char *' en 'LPCWSTR'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(790): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction
    ..\seqanwinqt\seqan/basic/debug_test_system.h(796): error C2664: 'BOOL RemoveDirectoryW(LPCWSTR)'ÿ: impossible de convertir l'argument 1 de 'const char *' en 'LPCWSTR'
    ..\seqanwinqt\seqan/basic/debug_test_system.h(796): note: Les types point‚s n'ont aucun rapport entre euxÿ; conversion n‚cessitant reinterpret_cast, cast de style C ou cast de style fonction
    ..\seqanwinqt\seqan/basic/alphabet_math.h(227): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max'
    ..\seqanwinqt\seqan/basic/alphabet_math.h(235): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max'
    ..\seqanwinqt\seqan/basic/alphabet_math.h(255): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min'
    ..\seqanwinqt\seqan/basic/alphabet_math.h(263): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min'
    ..\seqanwinqt\seqan/basic/alphabet_adapt_builtins.h(178): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max'
    ..\seqanwinqt\seqan/basic/alphabet_adapt_builtins.h(215): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min'
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(292): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'min'
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(297): warning C4003: nombre de paramŠtres r‚els insuffisants pour la macro 'max'
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(292): error C2059: erreur de syntaxeÿ: ')'
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): note: voir la r‚f‚rence … l'instanciation de la classe modŠle 'std::numeric_limits<seqan::SimpleType<TValue,TSpec>>' en cours de compilation
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(292): error C2334: jetons inattendus avant ':'ÿ; corps apparent de la fonction ignor‚
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): error C2143: erreur de syntaxeÿ: absence de ')' avant ';'
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): error C2059: erreur de syntaxeÿ: ')'
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): error C2238: jetons inattendus avant ';'
    ..\seqanwinqt\seqan/basic/alphabet_simple_type.h(311): fatal error C1201: impossible de continuer aprŠs une erreur de syntaxe dans la d‚finition du modŠle de classe
    jom: C:\Users\home\Documents\build-seqanwinqt-Desktop_Qt_5_9_1_MSVC2015_64bit-Release\Makefile.Release [release\main.obj] Error 2
    jom: C:\Users\home\Documents\build-seqanwinqt-Desktop_Qt_5_9_1_MSVC2015_64bit-Release\Makefile [release] Error 2
    20:55:07: The process "D:\Qt\Tools\QtCreator\bin\jom.exe" exited with code 2.
    Error while building/deploying project seqanwinqt (kit: Desktop Qt 5.9.1 MSVC2015 64bit)
    The kit Desktop Qt 5.9.1 MSVC2015 64bit has configuration issues which might be the root cause for this problem.
    When executing step "Make"
    


  • @dridk2

    Are you sure that those compilers do support C++14?

    Gut feeling for MSVC2015, I would expect that MS is not fast enough to have the support for C++14 already in this version. You may want to check.

    For MinGW 5.3 I believe that there is already the C++14 support. However, it looks like you have a collision of headers from MinGW and your header library. Possibly with a differenet MinGW compiler (newer version) you can resolve the problem.

    AFAIK Qt sticks fairly long with older MinGW version, because of potential incompatibility reasons.

    End of last year I have compiled Qt myself using MinGW 7.0.2 (32bit) and MinGW 7.2.0 (64bit). This worked out for me. I have compiled my applications and they worked apparently flawless. The source used has been Qt 5.9.2.

    Hope that helps



  • @koahnig Thanks for your reply.
    Does it mean I have to compile Qt with the new compiler ?
    I mean : Does my Qt dll library for mingw x works with mingw x+1


  • Lifetime Qt Champion

    @dridk2 either you compile Qt with a newer compiler yourself, or you use a newer Qt version already compiled with a newer compiler.



  • @dridk2

    To add to @aha_1980 it depends with MinGW you have more chances that there is compatibility between different versions.

    However, personally I would go for a complete compilation also of Qt libs. This just takes out the ambiguities and you know what you have.


Log in to reply