• 初涉Windows Mobile下的QT程序移植和部署


    Visual Studio 环境准备

    本文使用的WindowsMobile开发环境是Visual Studio 2008版本,要求在安装VS2008的时候,一定要选择安装Visual C++ ,并且要选择上智能设备可编程技术选项。如下图:

    image

    如果你已经安装过VS2008,那么只要从Windows的“添加/删除程序”找到VisualStudio2008进入维护模式即可重新添加或者删除VS2008的组件。

    在VS2008安装完成后,已经可以开发基于WindowsMobile5.0的应用程序了。不过现在Windows Mobile系列手机大多都已经是WindowsMobile6.0或者6.1以上的版本了,甚至已经不少手机玩家已经将手机刷成WindowsMobile6.5了。所以建议大家至少应该安装一个WindowsMobile 6 的SDK。并且最好是可以安装一个简体中文版本,因为简体中文版本里的设备仿真器里的WindowsMobile是中文版本的,如果用英文版本设备仿真器,那么程序运行后中文只会被显示为一个个的方框□□□□的。(WindowsMobile开发相关资源列表:http://www.cnblogs.com/upto/archive/2007/03/13/mobile-development-tools.html

    在WindowsMobile的SDK安装完成后,先不要着急开始继续后面安装QT库的步骤,让我们先创建一个WindowsMobile程序试试:

    (点击看大图)

    image

     

    image

    image

    直接按F5调试工程,经过短暂的编译和部署的步骤后,就可以看到一个设备仿真器的界面,并且会随机运行我们的测试程序,如下图:

    image image

    如果是在一个英文的ROM上运行,则会出现上面右图的情形,可以参考下图修改选择合适的模拟器来进行调试(点击小图看大图):

    image

     

    安装用于WindowsMobile的QT库

    可以从QT的官方网站查阅具体的安装步骤,具体可以访问: http://doc.trolltech.com/4.5/install-wince.html

    简单介绍一下我是如何按照上面的说明一步一步的安装用于VS2008 + WindowsMobile SDK 6的QT库吧。

    第一步,当然是下载QT啦

    当前 Qt for Open Source C++ development on Windows CE 的最新版本是4.5.2,可以从下面的链接下载:

     http://get.qtsoftware.com/qt/source/qt-embedded-wince-opensource-src-4.5.2.zip

    如果想查看下载最新的版本的话,请访问这个网址:

    http://www.qtsoftware.com/downloads/win-ce-cpp

    恩,这个包大小是138M,我用ADSL好一阵等啊。。。。

    第二步,安装配置前的设置

    首先是解包,将下载回来的包解压缩到c:\qt里,不过这个目录名称qt-embedded-wince-opensource-src-4.5.2好长啊,修改成c:\qt\ce452好了。

    我们可以注意到,在c:\qt\ce452\bin里,已经有一个很重要的批处理命令setcepaths.bat。

    下一步,从Visual Studio 2008的菜单项里,找到Visualt Studio Tools里的Visual Studio 2008命令提示符,点击它可以打开一个命令提示符,在这个命令提示符里,已经设置好了Visual Studio所需要的各种环境变量。你也可以打开任意一个命令提示符,然后运行 C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat ,也是同样的。

    然后,将c:\qt\ce452\bin 增加到PATH环境变量里。

    注意:从这步开始,我们的操作将主要在这个命令提示符窗口里输入命令。

    第三步,配置QT库

    从QT官方网站我们可以看到这样的配置示例:
    configure -platform win32-msvc2005 -xplatform wincewm50pocket-msvc2005

    可是我们使用的却是vs2008,该如何进行配置呢?我们可以打开(注意,是用文本编辑器打开而不是运行它)先前提到的 c:\qt\ce452\bin\setcepaths.bat,在最后面看到了适合vs2008的平台名称:wincewm60professional-msvc2008 (适合PPC类终端,如果是非触摸的smartphone则选择wincewm60standard-msvc2008),这两个名称也可以在c:\qt\ce452\mkspecs目录下看到。

    于是我们执行下面的命令:

    cd /d c:\qt\ce452

    configure -platform win32-msvc2008 -xplatform wincewm60professional-msvc2008

    于是经历了漫长的等待后,终于将QT库进行了正确的配置。

    接着是一步很重要的操作,运行:

    setcepaths wincewm60professional-msvc2008

    这个命令将会为我们设置适合的PATH,INCLUDE,LIB等环境变量,让我们可以在编译过程中正确的引用代码包含文件和库文件等。

    然后就是用vs2008提供的命令来进行QT库的编译了,简单的在命令行输入:

    nmake

    这一次将经过更长的编译过程。不过假如没什么意外发生的话。你只要去散散步或者喝水杯咖啡小歇一会再回来,QT for Windows Mobile 6 的库就已经编译完成,可以使用啦。

    移植和运行调试QT开发的应用程序

    注意,我们还是在之前的命令提示符下进行后面的操作。如果你已经关闭了那个提示符窗口,那么可以新打开一个提示符窗口,然后将 c:\qt\ce452\bin添加到PATH环境变量的前面,然后运行VisualStudio的vcvarsall.bat,如下所示:

    PATH C:\qt\ce452\bin\;%PATH%

    "C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"

    setcepaths wincewm60professional-msvc2008

    这里的环境变量设置是非常重要的步骤,只有正确设置了,才可以正确的产生和编译链接 Windows Mobile的应用程序工程。

    首先要根据QT的 *.pro 文件生成可以在vs2008里使用的 *.vcproj文件,如果你是在VS2008+QT集成环境下作的开发,你可以需要先使用qmake  –project 命令来生成*.pro文件,然后我们可以使用下面的命令来生成vcproj文件:

    qmake –tp vc

    你也可以指定输出文件:

    qmake –tp vc –o ***.vcproj

    使用过VisualStudio和QT开发过桌面应用的童鞋一定会发现,这个命令其实就是用来将QT Project文件 ***.pro转换成Visual Studio的工程文件的。

    注:如果你并未设置环境变量,那么最好使用绝对路径运行qmake,比如 c:\qt\ce452\bin\qmake –tp vc –o ***.vcproj

    使用VisualStudio2008打开生成的 vcproj文件,然后按F5尝试编译运行。对于大部分简单的QT应用程序,到了这步基本上是不会有太多问题了。然而应用于WindowsCE的QT库与应用于普通Windows平台的QT库还是有一些差别的。具体的差别,恩,这个,我现在一个初学者还真说不上来什么。不过在我做一个具体的移植的工作时,至少遇到了QString::toStdString()不能用于WindowsMobile开发的情况,据说是因为在WindowsMobile里无法支持STL。。。。

    恩,总之,经过一番修改后,我们的新工程终于可以成功编译完成了。然后按F5运行之。

    生成….ok

    部署.…ok

    载入应用程序….YEAH,我们的QT窗口成功的在模拟器系统里出现啦:

    image image image

    旁边的对比图片是在Windows7下的运行效果,是很像吧? 恩,不过还是有点点区别哦,字体和按钮跟桌面上是不一样的效果了,最大的区别是,窗口的菜单栏,跑到右下角啦。

    这个测试程序是一个用来测试动态切换语言的,在桌面环境下,如果点了菜单里的translate后,就会将窗口上的文字都翻译成中文或者是另外一个字串,菜单的响应槽代码如下:

    void i18n::on_actionTranslate_triggered()
    {
        QTranslator trans;
        switch(nLang)
        {
        case 0:
            trans.load("i18n_zh");
            break;
        case 1:
            //nothing
            break;
        }
        qApp->installTranslator(&trans);
        nLang= (nLang+1)%2;
        ui.retranslateUi(this);
    }

    可是在模拟器上点了菜单后,界面没有任何响应,查阅上面的代码,很显然,trans.load肯定失败了。。。我们直接调试程序的时候,VisualStudio只是简单的部署了应用程序主输出文件(i18n.exe)和相应的qt库函数和Visual Studio 2008的C运行库,另外,细心的朋友一定也会注意到,现在启动的是一个英文版本的模拟器,如果不将其更换为中文的模拟器,即使我们成功的部署了i18n_zh.qm,也是不会显示出中文的。所以让我们从VisualStudio2008里更改一下部署设置吧:

    image

    可以再从“项目”菜单里选择“项目属性”来打开上面的窗口,然后从左侧选择“部署”即可。其中“部署设备”里列出的是在你的机器上所有安装注册了的模拟器。如果你安装了WindowsMobile 6.5 的Developer Tool,那么还可以看到有Windows Mobile 6.5的选项的。而“附加文件”里则是一些要随同目标文件部署的文件,qtgui和qtcore库以及visualstudio2008的运行时库就是在这里配置部署到模拟器里的。让我们点开它:

    image

    部署的附加文件列表格式是:一行一个文件,每行格式为 文件名|本地磁盘目录|目标路径|注册表否 ,在上图里我已经填写好了缺失的i18n_zh.qm文件的部署信息了。

    确定后重新按F5开始运行,这次是中文的模拟器了,并且切换显示语言后的中文也正确显示出来了:

    image

    利用QT编写的窗口在WindowsMobile手机里,同样的可以在右下角拖拉改变窗口的大小,也可以按住标题栏拖动以改变窗口的位置,这些,都与普通Windows窗口完全一致哦,好玩吧!是不是很想立刻就开始自己的WindowsMobile之旅了?别着急,还有最后一步,QT程序在WindowsMobile上的部署!

    QT程序在WindowsMobile上的部署

    此时,你的程序已经在WindowsMobile模拟器上正常运行了,你一定也跟我一样,非常迫切的希望可以让自己的程序在WindowsMobile的手机上运行起来吧!

    在Visual Studio 2008的帮助下,这一切都是很轻松的事情。

    首先,我们可以在我们的QT工程所在的解决方案里添加一个新的安装部署的项目,如下图(点击可看大图):

    image

    这里有几个要点:

    1. 添加到当前解决方案(因为要让安装部署的项目依赖我们的主项目)
    2. 项目名称,目录里最好不要有中文出现,也不要有空格之类的
    3. 安装部署项目的属性里,关于制造商Manufacture的名字,不能用中文。需要将默认公司名称修改为英文的。否则最后生成CAB文件时会失败。

    添加后的Visual Studio界面如下图所示

    image

    安装项目默认会在“文件系统”标签里显示“Program Files文件夹”和“应用程序文件夹”两项,可能你会有点迷惑,但是简单的试验就能明白各是什么含义的。简单做一下说明:

    位置 Program Files 对应WindowsMobile上的“程序”,你可以在这里创建目标文件的快捷方式,这样你的程序图标就可以显示在用户手机里了。倘若你不在这里创建快捷方式,要运行你的软件,就只能通过WindowsMobile的文件管理器去寻找你的程序才能运行了。这个位置有点点 PC “桌面” 的意思。
    除此之外,你还可以添加一个“Start Menu”的系统文件夹,对应WindowsMobile手机左上角的开始菜单,这个跟桌面Windows版本是一致的。

    而位置“应用程序文件夹”其实相当于桌面Windows里的C:\Program Files\…. ,所以你添加要部署的文件的时候,自然是应该添加到“应用程序文件夹”里的。下面开始添加需要部署的文件:

    image

    添加后的样子:

    image

    注意,我这里添加的是Release版本的文件。如果你想打包Debug版本的程序,要添加的文件分别应该是QtCored4.dllQtGuid4.dll,msvcr90d.dll。

    添加完成后,将项目配置切换为Release,然后在安装项目上点右键,选择“生成”即可将可以在手机上进行安装的CAB包给制作出来了。

    到此为之。大功告成了!我们终于可以在自己的WindowsMobile手机上运行自己写的程序了。让我们看看刚刚制作出来的安装包:

    image

    囧 !!!! ORZ…

    一个没啥功能的软件,居然有近9M的大小,看来用QT做的程序,这体型都没办法走苗条路线啊~~~~~算是一个美中不足的地方了吧。。。。

    现在都在传说Nokia将会在它以后产的手机里都部署上QT库,也不知道真假,如果是真的,那我一定会再写一篇初涉SymbianOS下的QT程序移植的博文,哈哈!

    http://code.google.com/p/klsudoku
    Email: ttylikl@qq.com
    QQ群:106249 ( Sudoku 群) QQ群:94388010( C++ 群)
  • 相关阅读:
    perl oneline
    perl修改镜像源地址
    pandas 模块
    django学习
    python- shutil 高级文件操作
    小爬虫爬一个贴吧网页的图片
    Python Tkinter的学习
    python的帮助信息的写法
    python3.5+tornado学习
    LinkedList,ArrayList,HashMap,TreeMap
  • 原文地址:https://www.cnblogs.com/ttylikl/p/1526696.html
Copyright © 2020-2023  润新知