qt4.8.4+wince7.0+opengles2.0开发环境搭建

       QT5正式发布了,期待已久,下了源码过来编译WINCE版本,网上找不到相关的移植文档,于是按照QT4的移植方法尝试了下,不出意外的出错了,不太容易解决。还是先用QT4的最新版本试下,再回过头来弄QT5。于是下载当前最新的QT4.8.4版本的QT源码来编译。

      经过漫长的等待和各种错,各种改,总算是把DLL版本和LIB版本的都成功编译出来了。LIB版本的好处在于不用在发布程序的时候,带着一堆QT的运行库,而且可能运行效率要稍高一点,以前用QT FOR WINCE 的QWIDGET时,就感觉到效率明显不如QT FOR EM LINUX,效率问题比较明显。这次将两个版本的QT进行了一下对比,都运行QTDEMO程序,也就是QT自带的DEMO AND EXAMPLE演示程序,用QGRPHICVIEW框架+QML+OPENGL实现的带动画效果,稍微修改下,就在WINCE板子上跑起来了,两个版本的程序,都运行比较流畅,没出现明显的效率问题,用眼睛看,看不出明显的差别。再同时运行两个较大的QML工程,也比较流畅。根据编译运行时出现的问题,简单的记录下重点。

      开发机:WIN7(32)

      开发板:TCC8925+WINCE7.0

      QT版本:QT:4.8.4的DLL和LIB版本

     QT FOR WINCE向来都存在比较多的问题,主要原因还是WINCE的没落,编译阶段出现的大量的错误,简单的小问题,基本上自己看下输出日志,再谷歌下能解决,这里不详细说明。在编译源码阶段,这里记录了一些不太容易发现和解决的问题。

   1.CONFIG文件中SDK名字后面的注释,在老版本的QT FOR VS ADDIN插件中会有BUG,需要删除,新版本中不需要理会。另外CPU体系,例如TCC8925为ARMv7,但是在BSP中导出的SDK中显示为ARMv4I,这里也应该写  ARMv4I否则后面编译会出错,找不到SDK,另外大小写要区分,默认的全都是小写,总之要严格按照导出SDK的名字来写。

   2.-embedded配置选项为EM LINUX用的,我刚开始不清楚这个选项时,加到我的配置中去了,结果导致大量错误,编译了LINUX的源码。

   3.某些版本中需要加入 -D __ARM_ARCH_5TEJ__配置项,我刚开始没加,导致出现了"Not supported ARM architecture"的错误。

   4.WebKit is only supported as a dynamically built library. Static linkage is not supported,在编译静态版本的时候,没注意到这一点,导致出错,还是硬着头皮一个个改,结果居然编译通过了,还生成了WEBKIT的LIB包,估计不能正常使用,有待测试,所以大家编译静态版本的时候,不要编译WEBKIT。
   5.另外,在编译出错的时候,最好是分析下出错的问题,大部分的小问题,都是比较容易解决的,可以在出错的模块,建立小的工程,单独去解决出错的问题,再继续。

   编译完了以后,运行的时候,还是会出不少的问题,简单的小问题不作说明,这里记录下不太容易解决的问题。

  1.动态库版本的建立应用程序,不需要配置,能正常生成,发布和运行,得是静态版本的,会提示链接错误,需要自己手动加入CE的一些运行时库。

   2.OPENGLES2.0的头文件和库文件,是需要板商提供的,在BSP里面。这个板的系统是我移植的,我是直接把BSP里的驱动头文件和LIB文件放到了SDK的安装目录下,比较方便,使用OPENGL的时候,由于系统默认的LIB文件的名字和实际的名字不一致,需要手动修改添加LIB的名字。

   3.在QML中使用SVG图片的时候,会提示svg: Unsupported image format,在静态版本中,需要在运行前,用宏导入SVG图片插件的LIB,动态版本未测试,可能需要运行时动态加载。

   4.配置时使用OPENGL作为默认的绘图引擎,但是QML提示Unable to load graphicssystem "opengl" ,使用QGLWIDGET做QML的WIDGET也无法显示内容。在网上到处找,也没有相关的解决办法。只能慢慢的找问题,发现在插件目录下,发现居然没有生成qglgraphicssystem.lib这个文件,于是手动创建个工程,把插件源码添加进去,成功生成了这个库文件,然后用静态导入的方式使用,出现链接错误,查看了插件源码,发现插件导出的符号名字,和库文件的名字不一样,修改后,OPENGL正常。

   5.在QML中使用圆角的矩形时,会出现圆角显示异常的现象,在运行busiindicator的例子时,运行一段时间后,板子的CPU突然上升到100%,程序死掉。可能是BUG,但是使用OPENGL作为图形系统时,这个BUG就不会出现了,或者在QML中手动在rectangle和image里加上smooth: true,也会掩盖这个BUG,具体原因未知。

   6.QML工程启动极慢,在包含多个QML文件的系统中,在开发板上,程序的启动时间变的很长,有时甚至超过20秒,或者更多。解决办法为将程序复制到系统目录,即从FLASH转移到RAM里面,或者使用C++的方式,程序启动时注册QML组件,以及减少程序启动时,加载的QML元素的数量,分割主QML文件等。通过这些优化,测试将一个启动时间超过20+的工程(约有30+的QML文件),降到了5秒以内,应该还有再继续优化的空间。

  总结,QT FOR WINCE 随着WINCE的没落,也变得越来越不起眼。BUG和使用问题都比较多,光是编译环境,都比较困难。不过QT本身是我最喜欢的C++库,功能强大,代码清楚,文档虽少,但是看着非常舒服。不断更新,生命力强大,源码开放,值得学习,期待官方 ANDROID和IOS版本的发布。之前想着在WINCE7上用GDI+做点东西,可惜CE源码里面,只有GDI+的DLL,没有头文件和LIB文件,有点无语,只能去找了个高手移植的WM上的GDI+的头文件,可惜和我的系统不太匹配,只有一部分能正常工作。于是想着QT的动画和QML的触摸屏效果,看能不能顺利实现一些特效,从目前的情况来看,虽然问题比较多,但总归是花点时间可以解决的,因为有源码,希望后面一切顺利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值