0

I am struggling to get Qt 5.4 to build for WEC. I am using the Toradex SDK (http://developer.toradex.com/software-resources/arm-family/windows-ce/development-tools#Visual_Studio_2008). I can get it to configure using “Configure –platform win32-msvc2008 –xplatform wince70embedded-armv4i-msvc2008” but build fails with a lot of linking issues like the following:

moc_qabstractitemmodel.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qstringlistmodel.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qeventdispatcher_win_p.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 Qt5Cored_pch.obj : error LNK2019: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::Lockit(void)” (_imp??1_Lockit@std@@QAA@XZ) referenced in function “public: __cdecl std::_String_const_iterator<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >::_String_const_iterator<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> >(void)” (??1?$_String_const_iterator@GU?$char_traits@G@std@@V?$allocator@G@2@@std@@QAA@XZ)
 moc_qtimeline.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qfilesystemwatcher_p.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qfilesystemwatcher_polling_p.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qfilesystemwatcher_win_p.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qxmlstream.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qabstractanimation_p.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qfuturewatcher.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 moc_qeasingcurve.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qmimetypeparser.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qmimemagicrule.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qmimeglobpattern.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qmimeprovider.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qsignaltransition.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qeventtransition.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qmimedatabase.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qmimetype.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qstate.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qfinalstate.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qhistorystate.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qabstracttransition.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)
 qeventdispatcher_win.obj : error LNK2001: unresolved external symbol “__declspec(dllimport) public: __cdecl std::Lockit::~_Lockit(void)” (_imp_??1_Lockit@std@@QAA@XZ)

It then eventually fails with:

....\lib\Qt5Cored.dll : fatal error LNK1120: 24 unresolved externals

I am following these instruction http://doc.qt.io/qt-5/install-wince.html , http://doc.qt.io/qt-5/windowsce-customization.html , http://doc.qt.io/qt-5/requirements-wince.html .

The full output of nmake can be found here https://onedrive.live.com/redir?resid=C4C880935B574748!90413&authkey=!ALtPVXdc7CKS1Uk&ithint=file,txt .

This now the third day that I have been struggling with this and I have finally ran out of thing to try, please help!

EDIT: I guess I should have added this from the beginning but here is the qmake.conf that I came up with:

# qmake configuration for Windows Embedded Compact 7 with VS2008 on ARM targets
#
# This is just a template for creating WEC7 mkspecs for ARM targets
# Replace the SDK name with actual SDK name.

include(../common/wince/qmake.conf)

CE_SDK                  = SDK2wince7
CE_ARCH                 = ARMV4I

DEFINES                += QT_NO_ACCESSIBILITY QT_NO_NATIVE_GESTURES QT_NOSTANDARDSHELL_UI_MODEL _CRT_SECURE_NO_DEPRECATE _WIN32_WCE=0x700 $$CE_ARCH _AMRV7_ armv7 _ARM_

QMAKE_LFLAGS_CONSOLE    = /SUBSYSTEM:WINDOWSCE,7.00 /MACHINE:THUMB /ENTRY:mainACRTStartup
QMAKE_LFLAGS_WINDOWS    = /SUBSYSTEM:WINDOWSCE,7.00 /MACHINE:THUMB
QMAKE_LFLAGS_DLL        = /SUBSYSTEM:WINDOWSCE,7.00 /MACHINE:THUMB /DLL /SAFESEH:NO
QMAKE_LIBFLAGS_RELEASE  = /LTCG
QMAKE_LIBS              = corelibc.lib coredll.lib
QMAKE_LIBS_CORE         = corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib coredll.lib winsock.lib
QMAKE_LIBS_GUI          = ceshell.lib ole32.lib $$QMAKE_LIBS_CORE
QMAKE_LIBS_NETWORK      = ws2.lib $$QMAKE_LIBS_GUI
QMAKE_LIBS_OPENGL       =
QMAKE_LIBS_COMPAT       =
QMAKE_LIBS_OPENVG       = libopenvg.lib
QMAKE_LIBS_OPENGL_ES2   = libEGL.lib libGLESv2.lib

QMAKE_RC                = rc

QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
QMAKE_COMPILER_DEFINES += _MSC_VER=1500
Gerharddc
  • 3,921
  • 8
  • 45
  • 83

2 Answers2

0

Seems to be related to this issue: What std::_lockit does? are you building a debug version or enabling some debug features? I'll check internally if someone already built this version on CE and let you know.

Community
  • 1
  • 1
Valter Minute
  • 2,177
  • 1
  • 11
  • 13
  • Ok thanks, I have no idea if any debug settings are set, I do not really have any experience with building Qt, I am just following the standard build procedures here because I cannot find pre-compiled binaries – Gerharddc Dec 31 '14 at 10:22
  • I'm a BSP/driver developer with a small experience on Qt myself. – Valter Minute Dec 31 '14 at 10:25
  • Sorry but missed part of my comment :) On our website you can find some binaries: http://developer.toradex.com/knowledge-base/qt-on-the-toradex-modules but those are for v 4.8. Do you need some 5.4 specific feature in your application? For Qt expertise we rely on our partner KDAB: http://www.kdab.com/services/platforms/qt-for-windows-ce/ I'm sorry but many people are in holidays (including myself :)) and getting quick answers may be complicated. – Valter Minute Dec 31 '14 at 10:32
  • Yes I know of those binaries but unfortunately I need Qt 5.4 or at least some version of Qt 5 though 5.4 would be preferred. – Gerharddc Dec 31 '14 at 10:35
  • I have tried compiling with SDKs from other manufacturers and have had some different results tough they also do not want to compile. I have though noticed that your SDK does not include the Opengl ES headers required by Qt, something that others have done. This is strange because you do offer Qt binaries that use OpenGL. – Gerharddc Dec 31 '14 at 16:01
  • The SDK is for all platforms and not all of them use openGL, you may find headers and libs in a full Windows CE install and use them. – Valter Minute Jan 01 '15 at 11:16
  • You can also download Qt 5.2 binaries provided by KDAB: http://downloads.kdab.com/toradex/qt-windows-opensource-5.2.1-offline.exe They are working also on 5.4, but I have no info on release plan, better to contact them directly if you need support. – Valter Minute Jan 01 '15 at 11:17
  • Ok thanks, I was wondering how to use the openGl and was also wondering where to find these 5.2 binaries, you make a reference to them on your site in the news section but there is no download link. – Gerharddc Jan 01 '15 at 14:38
  • I have downloaded it but complaining about a lack of Nvidia Tegra 250 graphics driver and it seems that the Tegra 250 SDK is not available for download anymore in any place that I can find. – Gerharddc Jan 01 '15 at 19:29
0

You can find the Nvidia Tegra SDK with the OpenGL headers here: http://developer.download.nvidia.com/tegra/files/ce6_tegra_250_5265393.msi

I expect that KDAB will have soon a prebuild ready to use Windows Embedded Compact Version, but the best is to get directly in contact with them: http://www.kdab.com/about-us/people-europe/

Daniel
  • 334
  • 1
  • 5