在Windows Vista/2008下搭建Symbian开发环境

升级到Windows Server 2008后,面临最大的一个挑战便是Symbian开发环境的迁移。让Carbide + S60第三版SDK 工作在Vista下的讨论已经比较多了,实现起来也并不复杂,所以本文主要关注Symbian 6.1等低版本OS的迁移问题,并以Nokia S60 SDK 1.2在Windows 2008 (x64)为蓝本进行说明,方法同样适用于Symbian 7.0s/8.1和Windows Vista (x86/x64)系统。

兼容性问题主要集中在GCC和模拟器上,后者相对比较容易,只需赋予管理员运行权限即可。GCC则是一个真正的麻烦事儿,由于它是Symbian为其工具链所改造的一个GCC 2.9的私有版本,不同于主版本分支,目前也没有继续的维护者[*]。Vista之后版本的Windows由于DEP和安全性保护的增强,使得GCC在编译中会出现“Exception: STATUS_ACCESS_VIOLATION”错误,即使定向关闭DEP或者完全关闭DEP也无济于事。为GCC工具所有的执行文件赋予管理员权限同样不管用,错误表现可能会有差异,但结果都一样。

继续阅读在Windows Vista/2008下搭建Symbian开发环境

当PC-Lint遇上Symbian

PC-Lint是一款强大的C/C++程序检查工具,毫不夸张地说,如果编译器能为你发现20%的程序缺陷,那么PC-Lint至少还能为你发现余下的65%。(最后15%还是留给你自己去排查吧,机器始终是无法取代人脑的~)

可是,当PC-Lint遇上Symbian,就像那法力无边的如来佛遇上了刁钻难缠的孙悟空,也常常拿它没有办法。如今咱可是和谐社会了,怎么说也不能一怒之下就将孙猴儿打下五指山,落的个百年不得翻身吧。为了让两位大爷和平共处,我这观世音也只好费力的来调解调解了。

首先,在下面的地址取得Symbian官方提供的Lint配置文件:
http://www.symbian.com/developer/techlib/v9.2docs/doc_source/faqsdk/faq_0449.html
(如果官方的链接无法下载,请[点击这里]下载其副本)

借助官方的配置文件,PC-Lint已经能够识别大部分的Symbian程序代码。但实践中遇到的一些Lint提示仍然是这份97年之后再也没更新过的配置文件所能应付的。在这里,我补充一些自己总结的额外规则,提供给大家参考:

-D_UNICODE

-e1774			// Disable dynamic_cast
-emacro(717, *)		// Ignore do{...} while(0) in macros
-emacro(???, _LIT)
-emacro(???, _L)
-function( exit, User::Leave, User::LeaveNoMemory )
-function( __assert, User::LeaveIfError )

至于TRAP/TRAPD所产生的“Warning 655”,始终未能找到有效的消除方法。(当然,最坏的情况下你也可以加上括号以迁就PC-Lint的智商……)

Symbian终于开始兼容POSIX

Official news: Symbian introduces POSIX libraries on Symbian OS

  Symbian终于放下高贵的“架子”,开始变得对开发者平易近人。“兼容POSIX”是在这一演变过程中迈出的具有里程碑意义的重要步伐。

  Symbian诞生之初(可以追述到当初的EPOC),是针对掌上型资源高度受限设备所开发的。为了最求极致的性能发挥和最小的资源消耗,它从操作系统内核到编程框架都进行了严苛的优化,甚至对C++的不少基本机制也进行了大刀阔斧的革新。这些优化足以让Symbian在面对WinCE时显示出压倒性的性能优势,并成为了Symbian最初在拉拢智能手机生产厂商时的核心竞争力。(想想老一代的WinCE吧,那简直是“耗电量大”、“响应迟钝”的代名词,连Palm都不如……)

  随着时间的迁移,Symbian的性能优势已被不断改善的手持终端硬件条件所逐渐抹平。而WinCE平台以其开发门槛低、可移植性高等现实优势迅速的羽翼丰满起来。面对竞争压力,Symbian不得不抛开过于完美化的前卫理念,从放宽License条件到提供兼容全局变量的解决方案,Symbian在保持其优雅构架的同时,也开始向“传统”敞开大门。这次对POSIX兼容结构的支持终于算是迈出了关键的一步。从此,大量的桌面应用,特别是侧重算法类的应用都可以更加轻松的移植到Symbian平台,为本已非常丰富的Symbian应用软件世界注入新的活力!