Symbian OS是当前应用最为广泛的smart phone操作系统。 Nokia,Panasonic,Siemens,Sony Ericsson的很多手机都是基于这个系统的。 可惜国内关于Symbian OS 开发的资料实在很少。

Symbian OS是当前应用最为广泛的smart phone操作系统。 Nokia,Panasonic,Siemens,Sony Ericsson的很多手机都是基于这个系统的。 可惜国内关于Symbian OS 开发的资料实在很少。 所以我打算根据自己的(浅薄)的经验写一套初级教程,让更多的人了解Symbian OS.

说起Symbian OS, 大概很多人都会想到Nokia Series 60, 80等等。 每一个symbian 联盟手机厂商都会在纯粹的Symbian OS上面添加自己的东西。 Series 60 是Nokia 的一个非常流行的软件开发包,7650, 3650, N-gage等等都基于它。我在这里使用的例子都可运行于Series 60. 但是我在这里讲的概念是纯粹的Symbian OS 而不是series 60, 这样的好处在于:有了这个基础, 我们可以为任何一个使用Symbian OS 的手机开发, 而不会局限于某些Series 60等特殊的API。这样可以使你的开发成果能够运行于更多的设备上。

那么首先我们需要Series 60 SDK, 在http://www.forum.nokia.com/main/0,6566,034-4,00.html 下载,安装sdk,详细步骤我就不在这里描述了。 如果有什么问题可以在这里问我。
安装之后,要测试基本路径是不是设置好了。 打开一个命令行窗口,输入 epoc , 如果你看到模拟器运行, 就说明已经安装好了。如果没有的话,请在提问的时候提供错误信息。

有了SDK,我们就已经可以开始开发了! 但是开发环境是很重要的, 任何Symbian OS程序都要涉及多个文件,Symbain 建议使用 Metrowork Codewarrior, 不过考虑VC6的普及程度应该更高,我在这里使用Visual C++ 6.0. 你也可以使用VC. Net, 不过目前中文sdk不支持vc7, 你需要下载英文版的。 以后命令行出现vc6的时候你就要使用vc7。

在讲解我们的第一个hello world程序之前, 我要简单说一下Symbian OS 工程的文件结构, 我们一共需要创建4种文件:
bld.inf 配置文件
*.mmp 工程文件
*.cpp 源代码文件
*.h 头文件

我们的hello world项目中, bld.inf 如下:
PRJ_MMPFILES
HelloWorld.mmp
只有简单的两行, 意思是: 这个配置文件将编译的工程有:Helloworld.mmp. Helloworld.mmp 稍微复杂一些,暂时不在这里讲解,你只需要知道它定义工程中都包括哪些源文件,哪些头文件,哪些lib文件就可以了。

基本的helloworld例子C:/Symbian7.0s/Series60_v21_C/examples/Basics/helloworld. 如果你的安装路径不同,需要相应改变。 由于实在很简单, 这大概是所有例子中唯一没有头文件的项目。Helloworld.cpp 如下:

#include "CommonFramework.h"
LOCAL_C void doExampleL()
{
_LIT(KHelloWorldText,"Hello world! ");
console->Printf(KHelloWorldText);
}
在我们讲解Descriptor之前你只需要知道_LIT把 "Hello world! "这个普通字符串转换成了Symbian OS的字符串格式,并储存在变量KHelloWorldText当中。 console->Printf(..)就是向命令行打印这个字符串。

那么现在我们需要编译这个工程,在命令行中进入examples/Basics/helloworld,输入bldmake bldfiles, 然后abld makefile vc6, 这是创建VC工程文件的基本步骤。 然后打开Visual studio,打开工作区, 在C:/Symbian/7.0s/Series60_v21_C/Epoc32/BUILD/SYMBIAN/7.0S/SERIES60_V21_C/EXAMPLES/BASICS/HELLOWORLD/HELLOWORLD/WINS 中。

分析一下这个巨长的路径你会发现,其实分为4段:

1。 C:/Symbian7.0s/Series60_v21_C/Epoc32 是全局环境变量%EPOCROOT%的所在,后我们在说这个路径的时候就用%EPOCROOT%代替。

2。build 这个目录存放abld 生成的项目文件。

3。SYMBIAN/7.0S/SERIES60_V21_C/EXAMPLES/BASICS/HELLOWORLD 是你的工程所在目录。

4。HELLOWORLD/WINS 是Helloworld项目, windows 模拟器,如果你为手机编译的话,就会是Helloworld/thumb.

然后运行的时候会弹出一个对话框要求可执行文件。 输入 %EPOCROOT%/release/wins/udeb/epoc.exe 然后你就会看到熟悉的"hello world"出现在s60模拟器上了!

先写到这里吧,但愿这些文字对大家有一点用处。 下一次我将介绍Symbian OS 的基本类型 和 代码规范

[这个blogger不能处理反斜线, 所以我只好用 '/'代替!]

常见问题:

1。各种编译问题

请确定你已经安装:

visual studio 6, Active Perl, Series 60 SDK

建议VC, Series 60, 还有你以后写的代码都放到同一个分区下, 可以省去设置上的一些麻烦。

visual studio 6的路径需要设置, 如果没有的话在 系统->高级->环境变量->Path 中添加,详细请看下边评论。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126303/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10294527/viewspace-126303/

Symbian OS 开发初级手册 (1)(转)相关推荐

  1. Symbian OS 开发初级手册 9(转)

    上课讲了Symbian OS中多线程的使用, 这可我们说说Symbian OS中使用更频繁的一个框架:Active Object(这里简称AO). 上课讲了Symbian OS中多线程的使用, 这可我 ...

  2. Symbian OS 开发初级手册(转)

    在创建实例的时候Symbian C++使用 new (ELeave) 来代替普通的 new , 比如: CBar *pBar = new (ELeave) CBar; 在创建实例的时候Symbian ...

  3. Symbian OS 开发的特点(转)

    Symbian OS 作为一个专门为手机打造的操作系统与PC的操作系统有着很多根本上的不同.本文就来探索一下这些区别.了解这些区别有助于我们更容易的理解Symbian OS的设计(比如清洁栈,二层构建 ...

  4. symbian系统开发教程(一)

    第一章:Symbian OS简介 作者:谢兴        enigma19971@hotmail.com                                         ---转载需 ...

  5. Symbian OS简介

    原文地址:http://blog.csdn.net/wh_xiexing/archive/2007/11/15/1887002.aspx 1.1.    Symbian系统简介        当前有很 ...

  6. symbian系统开发教程(一) 1

    第一章:Symbian OS简介 作者:谢兴        enigma19971@hotmail.com                                         ---转载需 ...

  7. Carbide.c++ For Symbian 搭建开发环境

    在搭建开发环境之前,首先我们下载需要的SDK及辅助工具. 1. 下载perl,SDK要求的版本是5.6.1版的,只能是这个版本的,版本高了或低了都可能导致搭建环境的不成功,下载地址:http://ww ...

  8. Symbian S60开发环境搭建

    一.准备工作 1. 下载perl,必须用5.6.1版,版本高了或低了都可能导致搭建环境的不成功 下载地址:http://www.activestate.com/ 2. 下载java的运行环境,要求是1 ...

  9. Symbian OS on E65应用开发手记(3)——SDK注册及14天学习总结

    在环境搭建完成14天以后,今儿竟然神奇地提示我SDK已过期,需要注册--真吓人,你干吗我刚安装完的时候不提示我注册啊?折腾我!!!还以为我会从此找不到序列号,从此用不了了呢... 注册方法如下: 在对 ...

最新文章

  1. 微信小程序动画无限循环 掉花
  2. 特征筛选(随机森林)
  3. pku 1185 炮兵阵地
  4. python 持续集成部署_Jenkins部署git+python项目实现持续集成
  5. python字典包含指定键_python-字典中所有值的总和,其中包含键中的项
  6. update关联其他表批量更新数据-跨数据库-跨服务器Update时关联表条件更新
  7. Redis连接的客户端(connected_clients)数过高或者不减的问题解决方案
  8. jQuery的empty、remove、detach区别
  9. Java8实战[1-4]章要义笔记
  10. 系统更新win10服务器出错,Win10系统Windows Update更新出现0x80080005错误代码怎么办...
  11. MySQL使用order by默认是升序还是降序?
  12. 注册免费域名教程(怎样免费注册域名)手把手教注册域名
  13. fontawesome图标字体使用
  14. 【毛球科技】食品供应链的可持续性挑战
  15. IDEA Eval Reset 使用方法
  16. 基于STM32U5片内GPDMA Burst传输应用示例
  17. linux中的快捷键
  18. uva 378 Intersecting Lines
  19. Excel取消工作簿密码【忘记工作簿密码的解决方法】
  20. Mac上最好用的BT下载工具——Folx

热门文章

  1. SVM支持向量机原理(二) 线性支持向量机的软间隔最大化模型
  2. java读取nas文件_Windows store 8 app - 从NAS驱动器播放文件
  3. Win10 如何在运行窗口快速打开应用软件
  4. Ode45以及龙格-库塔算法
  5. 淘宝客流量劫持是什么意思?与淘宝劫持百度流量原理相同吗?
  6. Ubuntu 16.04 RTL8111/8168/8411 不能上网 经常断网解决办法 Author 时鹏亮 | 11/18/2016 = =这奇葩情况发生在从14.04升级到16.04之后,开始以
  7. 微信小程序手机号输入3和7位空格,删除时删除空格
  8. 前端实时识别条形码 quagga.js
  9. 双天线测向RTK无人车测试-替换磁罗盘和VFH避障算法测试
  10. openfeign调用excel导出接口