C语言进入开发手机应用的最速学习指导 3g的到来,智能手机越来越普及,手机全球几十亿的用户,未来的市场将是极大的,随着苹果的移动互联网终端软件商店,在欧美获得巨大利益之后,google、微软、nokia、三星都开始准备效仿其运营模式。 作为一个c和c++程序员,在现今这个大环境下,绝对不能袖手旁观,手机应用是我们现在出手创业的好机会,前两年我一个朋友用c和c++为手机开发了一个mad游戏,不到一年的时间就得到了融资商的亲睐,等到200万的投资,这是我十分震惊,我也准备自己创业。 我有对google、微软、nokia、三星的运营模式进行了一下了解,最近我注意到iphone的商业模式,由于苹果公司对网上商店软件监控十分宽松,造成,几万水平参差不齐的软件等待下载,你有再好的软件,对于小的开发团队,已经没有挣钱的希望了。 经过对比,发现三星公司现在在中国的手机软件销售模式十分有趣,现在似乎只有三星公司针对中国制定的政策,他们在中国现在正在收集优秀的手机软件,而且还帮助所有提供者(不论团体或公司大小)提高和完善软件应用,在商业分成上也十分厚道,我觉的是个好机会。 说了这么多如果不会手机开发,我们的创业梦想都是白费,所以我开是下定决心进入手机应用开发领域。我认为C程序员在手机应用领域是有着其他程序员不可替代的优势的,很多手机的深层次开发都要用c和c++.所以我信心满满的给大家介绍一下手机应用的快速学习方法: 现在了解一下最流行的Symbian 系统,Symbian 在全球智能手机中占有绝对的数量优势,而Symbian 的主要开发语言正好是C和C++,真是天助我们,三星移动创新者园地中文网站:http://innovatorsamsungmobile.com/index,为初学者准备的经过优选的丰富的学习资料和三星工程师分享的自己的开发学习经验。先看看下面的帖子链接。 1.Symbian OS 初探: http://innovatorsamsungmobile.com/bbs9 2.Symbian入门贴: http://innovatorsamsungmobile.com/bbs10 3.有很多教学视频,手册和一些初级精品电子书籍,例如: “C语言入门经典” 我看了下,,感觉应该是同类型书中比较经典的,三星工程师根据自身经验给大家精选出来的,格式都是PDF的,方便阅读和下载。 4.手机开发环境的部署: 手机开发环境的部署对于刚开始学习的人也很重要的,也有PC开发转手机开发帮助手册和PC开发转手机开发入门知识.例如:如何配置编辑环境,到如何搭建手机系统环境,再到编写出第一个HELLO WORD程序(程序写好后,还可以在网上预约真机测试),每一个步骤都有很详细的配置和解决问题的方法.一般Symbian安装配置环境的顺序是: (1)Series 60 2nd FP3 (2)ActivePerl-5.6.1.635-MSWin32-x86.ms (3)jdk-1_5_08-windows-i586-p.exe (4)Carbide C/C++ 1.2 WM环境搭建比较简单,但如果是第一次自己搭建Symbian系统环境和J2me环境的话可能会碰到很多让你抓狂的问题.三星中文网上的帮助文档会让你少走很多弯路,手册全是全中文的. ^_^ 还有最最重要的一点是据说有些优秀软件开发爱好者,将有机会进入三星相关领域公司工作,我想这应该是每一个软件开发人员都有的梦想吧.从而让我下定决心转行做手机开发. 转行的这半年左右时间里,经历过不少辛酸和坎坷,幸好有三星BBS的专业工程师们,帮我解决了一个又一个的技术难题和开发思路,在此表示感谢. 下面写点在Symbian系统上C工程师需要特别注意的地方: (1)首先PC平台和手机平台还是有区别的,虽然手机平台中也支持C语言,移植也不很是麻烦,但要考虑C语言和C++语言的混合编程问题,因为在UI层肯定是要以C++语言来设计的,UI层中的代码无法被移植,必须结合平台上的UI设计方法来设计,而UI层中要实现的功能可以用C语言来实现,所以要考虑好哪些应该用C++来设计,哪些应该用C语言来设计,如果出现C语言中的代码调用C++中的代码(这种情况应该尽量避免),则该C语言的代码必须用C++来编译,用C++来编译的文件名最好以“CPP”为扩展名,在C++中引用C的代码是最好加上"extern “C” {}”,在用C编译的头文件中要有这样的修饰: #ifdef __cplusplus extern "C" { #endif ... #ifdef __cplusplus} #endif; (2)在程序退出之前要调用CloseSTDLIB(),以释放所有缓冲,该函数在“reent.h”文件中; (3)在MMP文件中要加入“estlib.lib”,该LIB库是C标准语言的LIB库; (4)Symbian中的STDLIB并没有完全实现POSIX的全部标准,所以有些C库的函数要自己实现或用其它方法来替代; (5)在C语言工程中最好不要有可写的全局静态变量(Global Writeable Static Data),在有些手机版本中是不支持全局变量的,但可以有全局静态常量,对于全局指针常量注意要这样申明,例如:static const char* const,即要有两个“const”.如果有出现全局静态变量或静态常量,则在MMP文件中要加入“EPOCALLOWDLLDATA”标识,否则会出现编译错误.对于可写的全局静态变量有种处理方法是把所有全局变量放到一个STRUCT结构中,然后这个结构的指针用Dll::SetTls()和Dll::Tls()来存取,存在的问题是用C编译的代码中无法调用C++的这种方法,还有一种最笨的处理方法是把指针的值存入一个文件中;呵呵..这种方法估计一般人不会用.. (6)在C++与C的交互接口中会存在如char*与TdesC之间的转换,可以这样转换,例如: 把TDesC转换成char*: HBufC8* utf8TempText = HBufC8::NewLC(STRING_LENGTH); TPtr8 utf8Text(utf8TempText->Des()); CnvUtfConverter::ConvertFromUnicodeToUtf8(utf8Text,TDesCString); Char* cString = (char*)utf8Text.Ptr(); 把char*转换成TPtr: TPtr8 utf8Text((TText8*)cString,strlen(cString),strlen(cString)); HBufC* ucs2TempText = HBufC::NewLC(utf8Text.Length()*2); TPtr ucs2Text(ucs2TempText->Des()); CnvUtfConverter::ConvertToUnicodeFromUtf8(ucs2Text 下面有篇不错的贴子介绍给大家.是关于Symbian OS C++中RTTI的实现及原理的.主要是讲移植MFC代码实现RTTI的意义及具本实现过程,写得相当的仔细.这个问题我原来遇到过,对我很有帮助,在这儿分享给大家: http://innovatorsamsungmobile.com/bbs11 -- 本文来源:https://www.wddqw.com/doc/91918f2d7375a417866f8fa2.html