标准C程序symbian编译总结(1)
来源:互联网 发布:linux 自动解压war包 编辑:程序博客网 时间:2024/05/29 11:03
内核SYMBIAN编译总结
1 无需按照symbian的命名规范来,包括数据类型,只需要按照标准的C来就可以。
即:short 无需非要用 Tint16;
2 包含的头文件,也仅需标准C的库文件,无需其他头symbian特定文件。需要在mmp文件中指定标准C库:
SYSTEMINCLUDE /epoc32/include /epoc32/include/libc/
LIBRARY euser.lib estlib.lib
另外需要在退出dll的函数中调用一次:
#ifdef SYMBIAN_OS
CloseSTDLIB();
#endif
3 导出函数定义:一般先定义宏:
#define SYMBIAN_OS
#ifdef SYMBIAN_OS
#define API_IMPORT IMPORT_C
#define API_EXPORT EXPORT_C
#elif defined(WINDOWS)
#define API_IMPORT __declspec(dllimport)
#define API_EXPORT __declspec(dllexport)
#else
#define API_IMPORT
#define API_EXPORT
#endif
其实在WINDOWS平台我们无需定义,我们可以使用DEF文件。这样我们可以定义如下形式:
#ifdef SYMBIAN_OS
#define API_IMPORT IMPORT_C
#define API_EXPORT EXPORT_C
#else
#define API_IMPORT
#define API_EXPORT
#endif
在头文件中声明导出函数使用API_IMPORT 一般头文件都要在(例如:my.h)
#ifdef __cplusplus
extern “C”
{
#endif
API_IMPORT void Fun1();
API_IMPORT int Fun2();
#ifdef __cplusplus
}
#endif
带有色彩部分的代码对所有平台都使用,声明为导出是C的函数;
在实现文件中定义导出函数使用API_EXPORT
#include “my.h”
API_EXPORT void Fun1()
{
………
}
4 Symbian OS 有的采用了EKA2,那么该内核支持全局变量,称为global WSD(Writable Static Data). 如果是其他版本,则需要采用没有全局变量的形式,采用TLS形式:
4.1 定义一个全局的数据结构;
typedef struct
{
CSuspectImgArray *pSuspectImgArray ;
SLINEINFO *pGlobalCurLine;
SWORDINFO *pGlobalCurWord;
TInt32 nSplitNum;
BOOL bInitFlag ;
SEEDDICT SeedDict[MAXLANG];
TInt32 g_nLangNum; //recognition Language count
SELFDICT SelfDict;
} TGlobalData;
4.2 初始化函数中加上;
TGlobalData* pD;
pD = (TGlobalData*)new TGlobalData;//申请内存分配
if( !pD )return STATUS_NO_ENOUGH_RAM;
//设置thread local storage
if(Dll::SetTls(pD) != KErrNone)
{//主线程
delete pD;
return STATUS_FAILED;
}
4.3 使用函数中
#ifdef SYMBIAN
TGlobalData* pD = (TGlobalData*)Dll::Tls();
if ( !pD )
return 0;
#endif
g_GlobalImg = pWordImg;
其中定义(也可以不这样定义,直接访问,之所以这样定义,是为了跟没有使用TLS的C程序好兼容,无需修改):
#define g_GlobalImg pD->g_GlobalImg
4.4 最后释放函数
delete (TGlobalData*)Dll::Tls();
Dll::SetTls(NULL);
- 标准C程序symbian编译总结(1)
- 编译运行symbian程序(如何打开一个symbian工程)
- 命令行下编译Symbian程序环境配置总结
- symbian对话框总结:标准对话框
- symbian引用C标准库
- C 程序编译过程总结
- 命令行下编译Symbian程序
- symbian对话框总结-标准对话框
- symbian对话框总结-标准对话框
- symbian对话框总结-标准对话框
- centos中g++编译c++II标准的程序
- symbian 编译(转载)
- symbian 编译
- linux下编译运行c 程序小总结
- C/C++程序编译链接接过程总结
- 打造SublimeText成为移动化可编译标准C程序的编辑器
- 在C++程序中如何调用标准C语言编译的动、静态库
- 在C++程序中如何调用标准C语言编译的动、静态库
- MySQL常用命令及基本操作总结
- 在Symbian OS平台上移植C语言工程的方法
- SQL2000 MMC无法创建管理单元解决方案
- web.config connectionStrings 的问题
- 计算程序运行时间 毫秒
- 标准C程序symbian编译总结(1)
- sicp 第一章习题试做
- PHP导入导出Excel方法
- 下载文件出现提示框或者直接显示在浏览器中_asp.net技巧
- Oracle杀死死锁进程
- 数据绑定时 Eval 和 Bind 的区别
- ASP.NET数据绑定—多样的绑定方式
- 浅谈.NET中的数据绑定表达式(一)
- snoopy——PHP版的网络客户端