Build Qt 5.2 for windows ce 6



  • Hi,

    i'm trying to build qt 5.2.0 (visual studio 2005) for windows ce 6.
    I have a windows xp machine with visual studio 2005 , perl etc installed

    If i run

    configure -platform win32-msvc2005 -xplatform wince6galileo-armv4i-msvc2005

    on the Qt\5.2.0 folder

    it tells me:

    c:\Qt\5.2.0\qtbase\src\corelib\global\qlogging.cpp(96) : error C3861: 'GetConsoleWindow': identifier not found

    What' wrong here?
    I'm a little confused....



  • Hi,

    did you found a soloution for this issue? I think I've got exactly the same problem. I tried to build qt 5.2.1 (opensource.zip) on a Windows 7 64 bit machine with Visual Studio 2005 Professional while having ActivePerl etc. installed. I used the Visual Studio 2005 Command prompt with the following line for configure:

    @
    configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005 -opensource -nomake examples
    @

    ... which ends up in the following output after about 2 min.:

    @
    ...
    qglobal.cpp
    qmalloc.cpp
    qlibraryinfo.cpp
    qnumeric.cpp
    qlogging.cpp
    D:\qt-source5.2.1\qtbase\src\corelib\global\qlogging.cpp(96) : error C3861: "GetConsoleWindow": identifier not found.
    Code will be generated...
    NMAKE : fatal error U1077: ""C:\Program Files (x86)\Microsoft Visual Studio 8\VC\BIN\cl.EXE"": return code "0x2"
    Stop.
    Building qmake failed, return code 2
    @

    I also tried to do just a simple:

    @
    configure
    @

    within Visual Studio 2005 Command Prompt -> Ends up in the same error.
    Does anybody knows what wents wrong here? Am i doing something totally wrong or missing something? Well I'm also confused after trying many different things...


  • Moderators

    welcome to devnet

    I was just stumbling over your post. I have noticed that neither your post nor the previous refers to the windows embedded CE kit which has to be installed separately "e.g. this one":http://www.microsoft.com/en-us/download/details.aspx?id=15883
    This might be a stupid suggestion and you have already done this. So just in case.



  • Hi,

    thanks for your suggestion. Today I've tried something different and get the configure to work. I know the following is totally restricted etc. but had to gave it a try :). I modified the problem file qtbase\src\corelib\global\qlogging.h and added the following on top of it:

    @
    #ifndef _WIN32_WINNT
    #define _WIN32_WINNT 0x0500
    #endif
    @

    I found this soloution while searching for "getConsoleWindow" problems. The reference is written down as remark here -> http://msdn.microsoft.com/en-us/library/windows/desktop/ms683175(v=vs.85).aspx
    After this my configure runs fine without any problems. But now I expected the following error after calling nmake. After nmake runs ~30 mins i got the following output:

    @
    d:\readonly\qtsrc\qtbase\include\qtcore../../src/corelib/tools/qvector.h(666) : error C2244: 'QVector<T>::erase' : unable to matc
    h function definition to an existing declaration
    definition
    'QVector<T>::iterator QVector<T>::erase(QTypedArrayData<T>::iterator,QTypedArrayData<T>::iterator)'
    existing declarations
    'QTypedArrayData<T>::iterator QVector<T>::erase(QTypedArrayData<T>::iterator)'
    'QTypedArrayData<T>::iterator QVector<T>::erase(QTypedArrayData<T>::iterator,QTypedArrayData<T>::iterator)'
    @

    There are some more errors but all with QVector<T>::insert and QVector<T>::erase. I Googled a bit and found this post here which looks like a similar problem and is also not replied yet: http://qt-project.org/forums/viewthread/36735
    I think i have to say that i compile for custom ce sdk. So i changed the qtbase\mkspecs\wince60standard-armv4i-msvc2005\qmake.conf and added additional includes and libraries there. I also use the following defines there:

    @
    DEFINES += WINCE _WINDOWS WINDOWS_CE_OS _WIN32_WCE=0x600 UNDER_CE=0x600 ARM ARM ARMV4I UNICODE _UNICODE _USE_32BIT_TIME_T _CRT_SECURE_NO_DEPRECATE $$CE_ARCH AMRV7 armv7 ARM QT_NO_CLIPBOARD QT_NO_ACCESSIBILITY QT_NO_NATIVE_GESTURES QT_NOSTANDARDSHELL_UI_MODEL
    @

    Is it so hard to compile qt 5.2.1 for ce? Should i use an older version of qt (i need at least qt5 for JSON handling)? Any suggestions?


  • Moderators

    Please check out how to use "code tags for code wrappings":http://qt-project.org/wiki/ForumHelp#e3f82045ad0f480d3fb9e0ac2d58fb01 I have introduced them for you.

    The only experience I have is a while back. I had used Qt4.5 and went the way up to Qt4.7 I believe. In addition it was the older windows CE 5 version. Personally I would start there when looking to cross-compile for win CE 6. However, you have to know if it is a solution for you.

    One thing I just saw by chance is some mismatch above. You use
    @
    DEFINES += ...
    _CRT_SECURE_NO_DEPRECATE $$CE_ARCH AMRV7 armv7
    ...
    @

    should this be:
    @
    DEFINES += ...
    _CRT_SECURE_NO_DEPRECATE $$CE_ARCH ARMV7 armv7
    ...
    @

    AMR versus ARM is the issue.



  • Hi there,

    I'd also like to build QT (5.2.1) for Windows CE. My assumption is that the qmake.conf within mkspecs seems not to be used.

    I use:
    C:\Qt\5.2.1>configure -platform win32-msvc2005 -xplatform wince60un31-armv4i-msvc2005

    Within my qmake.conf file I added _CRT_SECURE_NO_WARNINGS to DEFINES and QMAKE_COMPILER_DEFINES. However, I still get compiler warnings with _CRT_SECURE_NO_WARNINGS. Building qmake also fails on GetConsoleWindow. I took a look into the qlogging.cpp.

    There is an ifdef around this code section:

    @#if !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT)
    static inline bool hasStdErr()
    {
    if (GetConsoleWindow())
    return true;
    STARTUPINFO info;
    GetStartupInfo(&info);
    return (info.dwFlags & STARTF_USESTDHANDLES) && info.hStdError
    && info.hStdError != INVALID_HANDLE_VALUE;
    }

    endif // !Q_OS_WINCE && !Q_OS_WINRT@

    Apparently Q_OS_WINCE doesn't seem to be set. How could this be?

    Best regards,
    Peter



  • Hmm... strange. To me it seems more and more that the configure.exe tries to build against standard Win32 API even if there is a WinCE qmake config in use.



  • Thanks koahnig for the introduction of code tags and the hint to "ARM vs AMR". Changing the define to "...ARM..." instead of "...AMR ..." has no effect regarding this error here. Also the installation of the CE TestKit brings no effect. Yesterday I tried to change my added define to:

    @

    if !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT)

    #define _WIN32_WINNT 0x0500

    endif

    @

    ... to ensure that that _WIN32_WINNT is not set during compilation for wince. But it even ends up in the QVector<T> error described above. I also tried adding the _WIN32_WINNT define to win32-msvc2005 mksepc (qmake.conf and qplatformdefs.h) which also ends up in the "getConsoleWindow" error.

    Next thing what i tried is a simple
    @
    configure
    @
    in a Visual Studio 2010 environment without modified qlogging.h, which simply works. But VS2010 finally has no platform sdk etc. Doing the same in a Visual Studio 2005 environment ends up in the getConsoleWindow error.
    Today I will give Visual Studio 2008 a try even Visual Studio 2005 with qt 5.1 Source instead of qt 5.2.1. I will post my experience here (if there is something (:).



  • Hello again!

    configure like this
    @
    ..\configure -platform win32-msvc2008 -xplatform wince60standard-armv4i-msvc2008 -opensource -nomake examples -no-compile-examples -qt-zlib -no-accessibility -no-native-gestures -qt-pcre -no-icu -no-gif -qt-libpng -no-opengl -skip winextras -confirm-license -prefix %INSTALLDIR%
    @

    with Visual Studio 2008 works. With the following configuration result:

    http://pastebin.com/345YfF2P

    I just copied the "wince60standard-armv4i-msvc2005" mkspec (the qt default one), changed the name to " wince60standard-armv4i-msvc2008", changed the CE_SDK to our CE60 SDK name and changed the defines to the following:
    @
    DEFINES += WINCE _WINDOWS WINDOWS_CE_OS _WIN32_WCE=0x600 UNDER_CE=0x600 ARM ARM ARMV4I _CRT_SECURE_NO_DEPRECATE $$CE_ARCH QT_NO_CLIPBOARD QT_NO_ACCESSIBILITY QT_NO_NATIVE_GESTURES QT_NOSTANDARDSHELL_UI_MODEL ARMV4I _M_ARM arm
    @

    Currently I stuck with the following error after many qt things are built with VS2008:
    @
    D:\Daten\External--qt-everywhere-opensource-src-5.2.1\qtbase\src\plugins\platforms\windows\qwindowsdialoghelpers.cpp(785) : error C2504: 'IFileDialogEvents': base class undefined
    @

    This is the first error I get. After this there are many syntax errors.



  • Hi there,

    As @pkuebler noted, Q_OS_WINCE isn't defined by the make system so C:\Qt\5.3.0\qtbase\src\corelib\global\qlogging.cpp fails to compile with the GetConsoleWindow error. I was able get passed this by defining Q_OS_WINCE right at the top of qlogging.cpp. Adding the define to the configure line or to C:\Qt\5.3.0\qtbase\mkspecs\common\wince\qplatformdefs.h didn't work.

    You must do one more thing, as noted @Qbee's post above. You must update the CE_SDK constant in qmake.conf in qtbase\mkspecs<build-target> to the name of the WinCE SDK you're using. For example, I had to set mine to

    CE_SDK = Windows Mobile 6 Standard SDK

    Odd, since it's in the wince60standard-armv4i-msvc2005 directory. I was then able to successfully complete the configure step.



  • Hi,

    I forgot to post an update here regarding my qt5 wince 6 experience.
    Finally I've got a successful build small build of qt5 for windows ce 6 built with VS2008.
    But as you can see in the configure command there are many missing components even the whole gui module.
    The following configure command enabled me to build qt5:
    @
    configure -platform win32-msvc2008 -xplatform wince60embedded-armv4i-msvc2008 -opensource -nomake examples -no-compile-examples -no-accessibility -no-native-gestures -no-gui -no-opengl -no-icu -skip activeqt -skip winextras -skip declarative -skip location -confirm-license
    @
    Currently it is okay for us to stay without the gui module in a wince environment since Core, JSON, XML etc. module works fine.
    The build with the gui modules currently stucks with the following error:
    @
    qwindowsdialoghelpers.cpp
    qwindowsdialoghelpers.cpp(804) : error C2504: 'IFileDialogEvents': Base class undefined
    @
    Next step is to get the qtmultimedia module working under wince. With the above described configure, the build system doesn't build the multimedia module.
    Does anybody know how to build the multimedia module for wince? Is there a way for just building the multimedia module without doing a new whole qt build?


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.