Qt Build for WinCe 6.0 fails with Link errors
-
Hi ,
I was trying to build Qt for Wince (PocketPc SDK). But there were
some errors. Please help me to resolve these issues
1) Configuration : configure -platform win32-msvc2005 -xplatform wincewm50pocket-msvc2005 ####Nmake paths#### set INCLUDE=d:\Program Files\Microsoft Visual Studio 8\VC\ce\include;D:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\PocketPC2003\Include
set LIB=d:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\armv4;D:\Program Files\Microsoft Visual Studio 8\SmartDevices\SDK\PocketPC2003\Lib\armv4
set PATH=d:\Program Files\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%
*2) Error* - Link error. After compilation it throws this error
moc_qeventtransition.cpp
Generating Code...
link /LIBPATH:"d:\Qt\4.7\lib" /LIBPATH:"d:\Qt\4.7\lib" /NOLOGO /NODEFAULTLIB:OLDNAMES.LIB /DEBUG /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB /DLL /VERSION:4.73 /OUT:....\lib\QtCored4.dll @C:\DOCUME~1\KRISHN~1.SW-\LOCALS~1\Temp\nm9AD.tmp
Creating library ....\lib\QtCored4.lib and object ....\lib\QtCored4.exp
QtCored_pch.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) moc_qlocale.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
moc_qfilesystemwatcher_p.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) moc_qfilesystemwatcher_win_p.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
moc_qtextcodecplugin.obj : error LNK2019: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) referenced in function "public: static class QString __cdecl QTextCodecPlugin::trUtf8(char const *,char const *,int)" (?trUtf8@QTextCodecPlugin@@SA?AVQString@@PBD0H@Z) qsignaltransition.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qeventtransition.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qxmlstream.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
moc_qfuturewatcher.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qstate.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qfinalstate.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qhistorystate.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qabstracttransition.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qutfcodec.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qtextcodecplugin.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qstatemachine.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qabstractstate.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qlatincodec.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qsimplecodec.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qtextcodec.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qtsciicodec.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qwineventnotifier_p.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qsharedmemory_win.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qsystemsemaphore_win.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qisciicodec.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qsharedmemory.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qsystemsemaphore.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qeventdispatcher_win.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qcoreapplication_win.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qsocketnotifier.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qtimer.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qtranslator.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qvariant.obj : error LNK2001: unresolved external symbol "const type_info::vftable'" (??_7type_info@@6B@) qmimedata.obj : error LNK2001: unresolved external symbol "const type_info::
vftable'" (??_7type_info@@6B@)
qobject.obj : error LNK2001: unresolved external symbol "const type_info::`vftable'"Please help me to resolve this issue.
Regards,
Krishna -
My Build last time i did had substantially longer paths including some out of our WinCE project ill post them below incase they are of any use to you. PCB06998_ARMV4I will be probably different in your case.
configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005 -rtti -exceptions -stl -qt-gif -multimedia -audio-backendINCLUDE:
@C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/include;
C:/Program Files/Microsoft Visual Studio 8/SmartDevices/SDK/SQL Server/Mobile/v3.0;
C:/WINCE600/PUBLIC/COMMON/SDK/INC;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/ddk/inc;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/oak/inc;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/sdk/inc;
C:\WINCE600\PUBLIC\IE\SDK\INC@
LIB:
@C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/sdk/lib/ARMV4I/debug;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/oak/lib/ARMV4I/debug;
C:/WINCE600/OSDesigns/OSDesign10/Wince600/PCB06998_ARMV4I/cesysgen/ddk/lib/ARMV4I/debug;
C:/WINCE600/PUBLIC/COMMON/SDK/LIB/ARMV4I/DEBUG;
C:/WINCE600/PUBLIC/IE/OAK/LIB/ARMV4I/DEBUG;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/atlmfc/lib/armv4i;
C:\WINCE600\PUBLIC\IE\SDK\LIB\ARMV4I\DEBUG;
C:\WINCE600\OSDesigns\OSDesign10\Wince600\PCB06998_ARMV4I\cesysgen\sdk\lib\ARMV4I\retail;
C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\armv4i;
C:\WINCE600\PUBLIC\COMMON\OAK\LIB\ARMV4I\DEBUG@
Path:
@C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;
C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_cex86;
C:/Program Files/Microsoft Visual Studio 8/VC/bin;
C:/Program Files/Microsoft Visual Studio 8/VC/PlatformSDK/bin;
C:/Program Files/Microsoft Visual Studio 8/Common7/Tools;
C:/Program Files/Microsoft Visual Studio 8/Common7/IDE;
C:/Program Files/Microsoft Visual Studio 8/@ -
Did you build this from a source distribution, or from a binary distribution? Building from binary distributions usually create problems, so I would strongly recommend building from a source distribution.
Also, I would suggest using the setcepaths script instead of setting the variables yourself.
(I assume you've used the information on "this page":http://doc.qt.nokia.com/4.7-snapshot/install-wince.html, which also tells you that you can use setcepaths instead of setting them yourself.)I have successfully built Qt for Windows Mobile 6 several times, but I have always done it using shadow builds (see "this page":http://doc.qt.nokia.com/4.7-snapshot/shadow-builds-wince.html for more info). Note that you may have to omit the examples when doing a shadow build (-nomake examples).
-
hello,
Thanks for your inputs. I tried to build shadow build. Again it fails in linking stage. I used setcepaths, but it failed in compilation itself saying "WinMain cannot not be overloaded". So I manually set the paths and was trying to build.
-
I have PocketPC 2003 SDK installed on WinXp
-
WinCe Platform Builder is also installed on my pc.
-
I dont find Arm4i folder under my PocketPC SDK folder. There is only Arm4 folder.(SDK\PocketPC\lib\Arm4,SDK\PocketPC\Include\Arm4)
I doubt the path and some libraries missing in my WinCe 6.0 platform builder installation.
Please help me to resolve the issue.
Regards,
Krishna -
-
The -xplatform wincewm50pocket-msvc2005 configure option is for the "standard" Windows Mobile 5 SDK (based on Windows CE 5.0).
PocketPC 2003 is based on Windows CE 4.2Do you really have to use the PocketPC 2003 SDK ?
If I remember correctly, Qt does not support officially supports pre-WM5.0 versions of Windows Mobile.
If you want to try to add support for PocketPC 2003 you will have to add a custom folder in the mkspec subfolder of the Qt sources (i.e. pocketpc2003-msvc2005) and put there custom configuration files derived from the WM50 ones.Then as configure option you have to use -xplatform pocketpc2003-msvc2005 to select your custom build options and instead of using setcepaths you will have to manually set PATH, INCLUDE and LIB environment variables to point at msvc2005 for ARM and to the pocketpc2003 sdk include and lib folders.
For example to set envirnment variables for msvc2005 and colibri600 sdk (a custom SDK for Windows CE 6.0) I did the following:
set INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\include;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\atlmfc\include;C:\Program Files (x86)\Windows CE Tools\wce600\Colibri600\Include\Armv4i
set LIB=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\lib\armv4i;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\atlmfc\lib\armv4i;C:\Program Files (x86)\Windows CE Tools\wce600\Colibri600\Lib\ARMV4I
set LIBPATH=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\lib\armv4i;C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\atlmfc\lib\armv4i;C:\Program Files (x86)\Windows CE Tools\wce600\Colibri600\Lib\ARMV4I
set PATH=C:\Program Files (x86)\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%Later following another discussion in this forum I discovered I could do the same with:
checksdk.exe -sdk "Colibri600 (ARMV4I)" -script tmp_created_script_setup.bat
tmp_created_script_setup.batBut I dont know if checksdk.exe works with pre-Windows CE 5.0 SDKs.
-
I forgot to add these links to previous discussions that may be useful:
http://developer.qt.nokia.com/forums/viewthread/4230
(building with custom SDKs etc. etc.)http://developer.qt.nokia.com/forums/viewthread/5341
(where tiger86 found it si possible to use checksdk for custom sdks) -
Krrish i never got set paths to work ether. I also had more build errors then link ones and spent a large amount of time using windows search to locate the required header files. Luckly for me the company i work for has since migrated to embedded linux so i don't have to deal with these issues anymore
-
@Krrish: Ditto for what SimonL said, I never got them working, but it's not too hard to just create your own batch file to set them. The paths won't change once you've got it to work so just version it and then it's job done.
Another thing I've found is that using a shadow build is a must because the "clean" of a configuration rarely works (for me) so I just delete the shadow directory and start again.
Could you post the configure line your using (for the shadow build) as this might help?