资源描述
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
参考资料:
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
参考资料:
结论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。
参考资料:
安装准备:
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)行为异常
参考资料:
今天突然发现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
安装ActiveSync4.5很简单。
安装开发板SDK时遇到问题,提示
解决办法是安装是不要选择文档(Documentation),具体的参照资料5。
资料5 单机搭建WinCE开发环境(四)
参考资料:
前几天一直在测试VS2005下WinCE6.0中文模拟器的使用,基本上没有问题了。今天便在VS2008中安装了一下WinCE6.0中文模拟器的SDK,又遇到了一些小问题,贴出来跟大家分享一下,也算是对单机搭建WinCE开发环境的一个补充。
第一次安装时,一路默认,开始一切正常,到安装快完成的时候出现了状况,先后出现了下面的两个提示,点完OK后就Roll Back了。
重新试了两遍,都是如此。难道VS2008不支持WinCE6.0?这似乎不大可能。那问题在哪里呢?像这种没头没脑的问题,只能“百度一下”了,结果“抱歉”。再Go一下,果然有6项相关的网页。其中有一篇提到,在VS2008中安装WinCE6.0的SDK时,不能完全安装,必须选择定制,并把.NET Compact Framework取消掉。
按照这个说法重新安装了一遍,问题依然存在。Faint~~为什么还是不行呢?
再安装一遍,把Documentation也取消掉,其他两项Native Development Support和Common保留,竟然可以了!新建了一个MFC的工程,编译下载测试,完全没有问题,这证明VS2008确实是支持WinCE6.0应用程序的开发的!
不过下面这两个问题到底是怎么回事呢?
ToolsMsmCA(Error):IHxFilters filter registration failure:Err = 0x80040305,Context = pFilters->SetNameSapce(Namespace)
ToolsMsmCA(Error): IHxRegisterSession transaction failure: Err = 0x8004036f, pRegSession->CommitTransaction()
把.NET CF取消掉就可以,那应该跟它有一定的关系。是不是.NET CF2.0和3.5引起的?不得而知,只是猜测罢了。不管怎样,能用就好。回头有时间再找找看原因,当然如果您知道这是怎么回事,也请指教啊。^_^
下面编译Qt源码,比较麻烦,步骤参考资料6:
资料6 编译Qt For Wince
参考资料:http://www.qtcn.org/bbs/read.php?tid=11920
Qt-WinCE全解
声明:花费了三天时间,周转各大网站,终于在今天将自己的第一个Qt程序在“小I(SAMSUNG i718+)”上跑了起来!
一、Qt 嵌入式环境的搭建
a)首先,下载Qt的嵌入式开发包qt-embedded-wince-opensource-src-4.4.0.zip
b)然后,下载VS2005。
c)最后,下载一个嵌入式开发的SDK,如Windows Mobile 5.0 Pocket PC SDK,可以在微软的官方网站上下载到!
d)还有一个是同步的软件 Microsoft ActiveSync4.5中文简体版。
------------------------------------------安----装----------------------------------
e)首先安装VS2005,很简单,按照向导来,在自定义安装中务必选择“智能设备开发”。
f)关于Microsoft ActiveSync4.5的安装更是“straightforward”。在此不再多说!
g)然后,安装Windows Mobile或是其它版本的SDK,可以用自定义的SDK!简单
h)比较麻烦的就是qt-embedded-wince的安装。参照下面的步骤:①、解压,将解压后的文件夹放到一个不含空格的路径中,如我的:f:\penguinx\qt_wince,qt_wince即为此文件夹。然后设置环境变量:右键“我的电脑”->“属性”->点“高级”标签->“环境变量”选项->在"PATH"中添加路径“f:\penguinx\qt_wince \ bin”。OK!②编译前戏。首先,配置编译选项,进行VS2005的命令行中,进入解压的文件夹,然后执行如下:configure -platform win32-msvc2005 -xplatform wince50standard-armv4i-msvc2005可以根据自己的板子及手机配置来选择其它的嵌入式的xplatfrom。这个过程可能需要十几分钟。执行完后,再次在VS2005中设置临时的环境变量,编译时要用到:如下:
set INCLUDE=D:\Program Files\Microsoft Visual Studio 8\VC\ce\include;D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Include\Armv4i
set LIB=D:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\armv4i;D:\Program Files\Windows CE Tools\wce500\Windows Mobile 5.0 Pocket PC SDK\Lib\ARMV4I
set PATH=D:\Program Files\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%
在此我期望能根据自己的软件安装情况将上面的目录“拿来主义”一下。设 置完后,执行nmake,过两、三个钟头后,你就可以Enjoy your journey.
最后,执行nmake,安装完毕!我的Qt-WinCE安装在 f:\penguinx\qt_wince
关于定制SDK 用如下的参考资料:
资料 7 定制SDK
在F:\qt441ce\mkspecs下新建一个目录“wince50armsys2440-armv4i-msvc2005”命名必须符合如下规则wince<version><SDK-shortcut>-[architecture]-msvc2005。将wince50standard-armv4i-msvc2005目录下的qmake.conf和qplatformdefs.h拷入新建目录。 xipttl800600
修改qmake.conf,将CE_SDK = STANDARDSDK_500修改为:CE_SDK = armsys2440并保存
下面是我用的F:\qt47\mkspecs\wince60SmartARM3250-armv4i-msvc2008\qmake.conf内容
include(../wince60standard-armv4i-msvc2005/qmake.conf)
CE_SDK = SmartARM3250
QMAKE_COMPILER_DEFINES -= _MSC_VER=1400
QMAKE_COMPILER_DEFINES += _MSC_VER=1500
configure -platform win32-msvc2008 -xplatform wince60arm3250-armv4i-msvc2008 -qconfig terminal3 -stl
我的set命令
set INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\include;C:\Program Files\Windows CE Tools\wce600\SmartARM3250\Include\Armv4i
set LIB=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\lib\armv4i;C:\Program Files\Windows CE Tools\wce600\SmartARM3250\Lib\ARMV4I
set PATH=C:\Program Files\Microsoft Visual Studio 9.0\VC\ce\bin\x86_arm;%PATH%
最后两部的安装没什么可说的。
配置vs2008
Qt->Qt Option->Add 选择编译Qt的目录->OK
裁剪Qt(Wince)
第一次编译,参考文件(\custombuild\first)
为解决错误
kernel\qapplication.cpp(6071) : error C2664: “QPixmap::QPixmap(QPixmapData *)”
: 不能将参数 1 从“const char **”转换为“QPixmapData *”
裁剪时添加IMAGEFORMAT_XPM模块支持
展开阅读全文