查看完整版本: [-- Qt-WinCE安装、开发及部署全解 --]

QTCN开发网 -> Qt嵌入式开发 -> Qt-WinCE安装、开发及部署全解 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

<<   1   2  >>  Pages: ( 2 total )

penguinx 2008-07-31 14:20

Qt-WinCE安装、开发及部署全解

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_winceqt_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



二、编译Qt-WinCE程序
命令行法(不用IDE)

首先、用VS2005命令行进入要编译的程序目录(此目录最好就在安装目录f:\penguinx\qt_wince),执行< f:\penguinx\qt_wince >bin\qmake.exe –project –o example.pro  其中,Install Qt Path为你的Qt-WinCE的安装目录。这个时候,可以产生example.pro文件。

然后、就是产生Makefile的时候:在VS2005命令行下输入:

f:\penguinx\qt_wince\bin\qmake -spec ..\mkspecs\wince50standard-armv4i-msvc2005 -win32 -o Makefile example.pro 此时,恭喜你,Makefile文件已经产生。

      最后,就是用nmake来编译和链接程序了。先将安装时的环境变量(三个set)在当前VS2005命令行下重新执行一遍。否则会出现如下错误:

cl: 命令行 warning D9002 :忽略未知选项“-QRarch4T

cl: 命令行 warning D9002 :忽略未知选项“-QRinterwork-return

main.cpp

mainwindow.cpp

f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : error C2

146: 语法错误 : 缺少“;(在标识符“wceMenu”的前面)

f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : error C4

430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : error C4

430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

f:\penguinx\qt_wince\include\qtgui\../../src/gui/widgets/qmenu.h(144) : warning

C4183: wceMenu: 缺少返回类型;假定为返回“int”的成员函数。

然后,执行nmake,看着一行的白银流失完后,就是金子(你的exe文件)了。

注意:在执行nmake的时候,可能会看到如下错误信息:

        link /LIBPATH:"f:\penguinx\qt_wince\lib" /LIBPATH:"f:\penguinx\qt_wince\

lib" /NOLOGO /NODEFAULTLIB:OLDNAMES.LIB /DEBUG /SUBSYSTEM:WINDOWSCE,5.00 /MACHIN

E:THUMB /OUT:debug\node.exe @C:\DOCUME~1\User\LOCALS~1\Temp\nm6B3.tmp

tmp\obj\debug_shared\main.obj : fatal error LNK1112: 模块计算机类型“X86与目标

计算机类型“THUMB”冲突

NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 8\VC\ce\b

in\x86_arm\link.EXE": 返回代码“0x458

      这种错误搞的我很无奈,我不执行nmake,直接执行nmake release就没有这种错误?这种错误可能是因为“环境变量”中“PATH”中设置了“f:\penguinx\qt_wince\bin”。在我把这个变量去掉后,重新打开VS2005命令行(因为得重新读取PATH变量)。然后按照上面的步骤做下来,最后用nmake重新执行一遍,很好很流畅!

三、Qt –WinCE程序的部署(非打包)
      可以直接把上面开发的*.exe文件和其需要的*.dll一起CP到一个目录中,这些dll一般有:

D:\Program Files\Microsoft Visual Studio 8\VC\ce\Dll\armv4i\ msvcr80.dll

F:\penguinx\wince_vs2005\lib\ QtCore4.dll

F:\penguinx\wince_vs2005\lib\QtGui4.dll

其它的根据自己项目的需要CP下,就行了。

      如果想将程序部署成*.cab形式的,在上面的“解决方案”中,点“文件”->“新建”->“项目”->点“其它”,其中有关于智能设备部署的,就它了(我在实验室机子上开发的,回来写手记,所以具体的操作记的不是非常清楚,将就!)。根据向导建立后,在新建的cab项目中点“属性”,最后,生成就行了。CP到板子就可以运行了。

注意:所有的CP都是用ActiveSync软件通过USB传输的,当然可以用其它传输手段,最终能上板子就行。

-Zm200 -w34100 -w34189 -Zm200 -w34100 -w34189 -w34100 -w34189

注意在WinCE部署时的版本,如果设备上的WinCE版本比开发用的版本低的话,将显示“****, 需要更新的Windows版本”云云。

/SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:THUMB

/SUBSYSTEM:WINDOWSCE,5.00 /MACHINE:THUMB





liuxianyu 2008-07-31 15:21
不错,赞一个

海边的笨蛋 2008-08-11 09:28
不错,顶一个

axlrose 2008-08-12 19:52
好文章,顶起来

ny13524 2008-08-29 09:48
好文章,顶

onepill 2008-09-09 15:17
我在NMAKE那步就一直不成功啊。就是你后来提到的THUMB 冲突,怎么解决啊?

penguinx 2008-09-23 13:41
引用第5楼onepill于2008-09-09 15:17发表的  :
我在NMAKE那步就一直不成功啊。就是你后来提到的THUMB 冲突,怎么解决啊?



1.就是直接 执行 nmake release。
2.安装符合你目标板子的SDK!
 
还有好几种我经历的错误,下次有空总结下然后给个解决方案!

justice 2008-09-26 12:49
非常感谢

mjf1986 2008-10-09 10:22
那几个dll就是太大了写一个helloworld加起来都要8m!!!!

penguinx 2008-10-11 16:27
引用第8楼mjf1986于2008-10-09 10:22发表的  :
那几个dll就是太大了写一个helloworld加起来都要8m!!!!


我也有同感,但是没有办法。静态编译的话估计也不小!
有办法将QtGUI/QtCore等裁减下就好了。

cooldew 2008-10-15 13:15
不错,赞一个,学习

ewew 2008-10-22 17:03
不错,顶一个

wsjdmc 2008-10-29 20:17
这个版本没有designer吗?

penguinx 2008-11-27 12:29
引用第12楼wsjdmc于2008-10-29 20:17发表的  :
这个版本没有designer吗?


现在有了,我也是昨天才了解到。唉.......帮同学搞开发环境的时候,有个Qt-Visula studio Integration1.40的版本可以和VS2003~2008很好的结合。本来我同学安装的是桌面开发的,可是后来我看了下那个插件,原来在VS2008上也支持WinCE的 开发。而且是可视化开发的,和那个Qt Designer 一样的。 (其它的VS版本没试过。)

flyinmorning 2008-12-26 11:41
赞,羡慕啊

jackin0627 2009-01-06 14:17
楼主,我照你的方法做了,EXE也编译出来了,可就是放到开发板上运行不了。
报错,“XXX”is not a valid wince application.
我是把 QtCore.dll  QtGui.dll 和应用程序一块拷到开发扳上的,
CPU是 Sumsung S3C2440A         

唯笑志在 2009-01-15 09:30
我操作完了,也成功了,但是不知道如何用VS2005去开发WINCE的程序

jnny_cn 2009-01-16 14:51
引用第15楼jackin0627于2009-01-06 14:17发表的  :
楼主,我照你的方法做了,EXE也编译出来了,可就是放到开发板上运行不了。
报错,“XXX”is not a valid wince application.
我是把 QtCore.dll   QtGui.dll 和应用程序一块拷到开发扳上的,
CPU是 Sumsung S3C2440A         

估计你还差微软的运行时库msvcrt8.dll or msvcrt9.dll看你用的版本了

sikylori 2009-02-16 15:09
虽然我已经会这种方法,不过还是顶一个

eagercake 2009-02-18 17:59
configure -platform win32-msvc2005 -xplatform wince50standard-armv4i-msvc2005
和install里面使用的configure -platform win32-msvc2005 -xplatform wincewm50pocket-msvc2005的区别是什么?好像选择交叉编译平台会有问题。

jameszh 2009-02-27 14:52
好人啊!!!

brighi_037 2009-03-05 21:47
好好学习,得顶一下,

penguinx 2009-04-10 12:10
神啊,半年没上来看了,地都荒了。呵呵 希望没浪费站长的服务器!PHP是个好东西啊!呵呵

magic-h 2009-04-16 22:57
我在编译example程序时,nmake时有很多头文件找不到,还有很多语法错误,不知道有没有人遇到?

yeguoxiong 2009-04-18 09:54
感谢。

tzj115 2009-06-29 10:35
不错!

chinagxc 2009-07-09 23:09
好呀--

myywy 2009-07-21 15:14
好文章,顶起来

dianfengxiao 2009-07-29 14:12
我也想学这个

jackxo1981 2009-08-03 15:09
最近正好在开发一个项目,正愁没有开发环境.
有没有别的平台的,比如嵌入式linux 的

pulongpu 2009-08-30 08:26
很好顶顶顶顶顶顶

pulongpu 2009-08-30 08:28
很好顶顶顶顶顶顶

mgpd 2009-09-03 09:44
很好的文章 感謝

erren 2009-09-14 15:27
谢谢!

q3310110 2009-09-16 10:28
http://www.cnblogs.com/jade2009/archive/2009/02/20/1394782.html

same as this?

dane 2009-09-19 18:27
xuexi xia ,为什么我的老师报错呢?nmake是总是报0x2错误。不知道怎么解决。

ahnushe 2009-09-22 09:20
ding......................................

luohui8891 2009-09-25 19:36
LZ你好,我是一个刚学嵌入式的学生,我现在的板子是ARM9+wince5.0的,开发平台是VS2008
请问我要装的SDK需要哪个?
我现在配置都出错提示Use of C runtime library internal header file。

xiaobiaobiao 2009-09-26 14:13
找的就是这个好东西啊

luohui8891 2009-09-28 20:33
我一个工程,按您的方法配置好以后,CP到SD卡上,放入目标板运行,提示应用程序 执行一个非法操作

pulongpu 2009-10-04 21:55
好文章,顶起来

xab1987 2009-10-25 16:08
灰常感谢。。。。。。。。。。

zen_yue 2009-12-05 18:33
Qt wince 4.5.3编译失败
请教各位,我下了 qt-embedded-wince-opensource-src-4.5.3.zip 在nmake时提示出错,信息如下:

d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(347) : error
C2733: second C linkage of overloaded function 'InterlockedIncrement' not allowe
d
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(347)
: see declaration of 'InterlockedIncrement'
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(348) : error
C2733: second C linkage of overloaded function 'InterlockedDecrement' not allowe
d
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(348)
: see declaration of 'InterlockedDecrement'
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(349) : error
C2733: second C linkage of overloaded function 'InterlockedExchange' not allowed

d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(349)
: see declaration of 'InterlockedExchange'
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(350) : error
C2733: second C linkage of overloaded function 'InterlockedCompareExchange' not
allowed
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(350)
: see declaration of 'InterlockedCompareExchange'
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(351) : error
C2733: second C linkage of overloaded function 'InterlockedExchangeAdd' not allo
wed
d:\qt_wits\include\qtcore\../../src/corelib/arch/qatomic_windows.h(351)
: see declaration of 'InterlockedExchangeAdd'
D:\Program Files\Windows CE Tools\wce600\WitsSDK\Include\Armv4i\malloc.h(45) : e
rror C2143: syntax error : missing ',' before '*'
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 8\VC\ce\b
in\x86_arm\cl.EXE"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 8\VC\BIN\
nmake.exe"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.

请大家帮忙看看如何解决,谢谢!

winnie228 2009-12-25 16:04
好文章,顶

carlward 2010-01-25 23:57
不知道能不能和 EVC4.0 部署?

lee_zhou 2010-05-06 14:38
问下,我在编译程序那一步< f:\penguinx\qt_wince >bin\qmake.exe –project –o example.pro  老是提示拒绝访问。<f:\penguinx\qt_wince >这样的访问方式对吗?为什么总是提示拒绝访问

wayuan 2010-05-13 22:22
菜鸟问题 想问下 ,下面的临时环境变量是在哪里输入?是在VS2005的命令行中中输入?还是在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%

xushiq 2010-07-13 21:46
[attachment=4058] 我也是NMAKE出现错误 提示未找到MAKEFILE    

xushiq 2010-07-13 21:52
  
引用第18楼sikylori于2009-02-16 15:09发表的  :
虽然我已经会这种方法,不过还是顶一个

请问 在nmake的时候出现这个错误怎么办啊[attachment=4059]

guhuaijian 2010-08-04 00:12
我也出现同样的问题
然后发现nmake的完整的命令行参数如下:
nmake [option] [/f makefile] [/x stderrfile] [macrodefs] [targets]
或者
nmake @commandfile
其中commandfile是存储命令行参数的文本文件
/f参数 是指明使用的Makefile的文件名,如果不指定,则使用当前目录下的文件名为Makefile的文件,问题就出在这,因为你的当前目录下根本就没有Makefile这个文件,所以会找不到,我的解决方法是自己制定名字,如nmake [/f name]
至于找不到结束目标,这个问题我一直没解决,希望高人指点一下

另外问一下,nmake后的参数的必须的吗?
按照本文的搭建步骤,好像是直接用nmake的,后面什么参数都没有,但要是什么参数都没有的话,会报错


查看完整版本: [-- Qt-WinCE安装、开发及部署全解 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled