Qt for WinCE 环境搭建心得
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Qt for WinCE 环境搭建心得
李振宇2011-10-17
由于c#版终端软件在WinCE终端上运行不稳定,因此考虑用C++(Qt)重新开发,以前用Qt的SDK安装很方便,可是Qt Wince环境必须要编译Qt源代码,为了搭建环境经历了很多周折,历尽艰辛,花了3天时间,终于搞定了,现把主要步骤和注意事项记下,以留备用。
原来的开发环境设计msvc2005 + qt4.7.4 + qt-vs-addin1.1.9 (qt的此两项为当前最新版本)可是由于qt4.7.4在编译(for wince)时出现错误,此为qt4.7.4的一个Bug(见资料1),因此改为qt4.7.3。msvc2005在安装win32版时,由于只有msvc2008编译版,重新编译麻烦,因此改为msvc2008,否则Debug版编译有问题(见资料2)。还有qt-vs-addin1.1.9在和msvc2008,wince6.0搭配有问题,加不了qt库(见资料3),因此改用qt-vs-addin1.1.8。开发板方面用的是ARM9的SmartArm3250(wince 6.0)。
最终开发环境为msvc2008 + qt4.7.3 + qt-vs-addin1.1.9
资料1 : qt4.7.4 for wince bug
现象:编译qt库时出现错误error LNK2019: unresolved external symbol gmtime referenced in function png_convert_from_time_t
参考资料:https:///browse/QTBUG-21331
Description:When building the Windows CE version of Qt4.7.4 (using e.g., configure -platform win32-msvc2008 -xplatform wincewm60professional-msvc2008, linking (nmake) fails with the following output
...
Creating library ..\..\lib\QtGuid4.lib and object ..\..\lib\QtGuid4.exp
pngwrite.obj : error LNK2019: unresolved external symbol gmtime referenced in function png_convert_from_time_t
..\..\lib\QtGuid4.dll : fatal error LNK1120: 1 unresolved externals
Function gmtime is not available under Windows CE / Windows Mobile, so that would explain the linker error. I marked the Component as Image formats, as it seems to be related to pngwrite / libpng.
Answer:But QT 4.7.4 for WinCE have problems with maximized forms ( form.showMaximized() ) I have to get back to 4.7.3 version.
资料2 : msvc2005 Debug版不能用qt-win-opensource-4.7.3-vs2008.exe
参考资料:/yibobin/blog/item/7fe8b9f01cbd76d47831aa28.html
结论1:如果你想把Qt4.6.2安装在VS2005中,又不想花时间编译,请下载和安装qt-win-opensource-4.6.2-vs2008,并单独编译“QT安装路径\src\winmain\”
结论2:在安装qt-win-opensource-4.6.2-vs2008(msvc9/vs2008已编译版)之前千万不要安装qt-sdk-win-opensource-2010.02.1(miniGW已编译版),如果不幸安装了,请先卸掉它,切记!
资料3:qt-vs-addin1.1.9和msvc2008存在兼容性问题
现象:在vs2008添加qt库时出现错误this qt version is not compatible to your current visual studio. Qt builds VS version:0 current version:1500。
参考资料:https:///browse/QTVSADDINBUG-87
安装准备:
1.Visual Studio 2008 + vs2008 sp1
2.ActiveSync4.5(ActiveSyncsetup_PConline.msi)
3.开发板SDK (SmartARM3250.msi)
4.qt-everywhere-opensource-src-4.7.3.zip 编译为wince
5.qt-win-opensource-4.7.3-vs2008.exe 做本机开发测试
6.qt-vs-addin-1.1.8.exe VS IDE开发插件
安装vs2008就不多说了,注意安装vs2008时选上智能设备开发包。用winXp和ie8的注意了,vs2008和ie8在winXp上有冲突,解决办法见资料4。
资料4:IE8将导致VS2005(VS2008)行为异常
参考资料:/archiver/tid-875918.html
今天突然发现VS2005不能用向导创建Win32智能设备项目,
但是直接打开sln文件和程序的编译链接没有问题。
开始很莫名其妙不知道为什么,因为自己这几天似乎没弄什么东西。
想了想,好像装IE8了,就用ie8和vs2005的关键字搜索了一下,果然很多人遇到类似的问题:
“IE8和VS2005以及VS2008存在严重兼容性问题,微软官方论坛版主已经证实了”
在这里提醒一下准备装IE8的开发者,要考虑考虑。
----------------------------------------------------
3.31更新
已有对应方案,来自微软的Visual C++开发小组。
具体方法是:
在注册表里的下面位置
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\ 添加一个为1000的新项目,再在这个项目里添加一个值为0的DWORD项目1207。
---恢复vs2005向导异常.reg内容---
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet
Settings\Zones\1000]
"1207"=dword:00000000