织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 嵌入式开发 > Symbian OS >

在Symbian OS平台上移植C语言工程的方法

落鹤生 发布于 2010-08-04 09:24 点击:次 
在Synbian OS上的应用开发主要是以C++语言为主,但是也支持C语言的程序,把原有的C语言工程移植到Symbian OS上也是很容易的,其方法有如下几点
TAG:

Symbian是应用于高端手机(智能手机)上的一种操作系统,诺基亚、索爱的高端手机便是基于Symbian操作系统的,Symbian OS的优势在于其高稳定性和节能性,并且有众多主流手机产商的支持,现在是高端手机上的主流操作系统之一。在Synbian OS上的应用开发主要是以C++语言为主,但是也支持C语言的程序,把原有的C语言工程移植到Symbian OS上也是很容易的,其方法有如下几点:

1、首先要考虑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,utf8Text);

 


 

 


 

转载:http://blog.csdn.net/mido2008/archive/2009/03/05/3956306.aspx

(mido2008)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www1.rosoo.net/a/201008/9924.html]
本文出处:CSDN博客 作者:mido2008
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容