Symbian平台下制作dll&lib并在应用程序中使用引擎
2010-05-31 19:34:00 来源:WEB开发网// requirement for E32 DLLs
EXPORT_C TInt E32Dll(TDllReason)
{
return KErrNone;
}
这个是程序的入口,你会发现这个函数和游戏应用程序里的同名函数有些不同,那就是EXPORT_C修饰符。在引擎中,所有需要导出的函数定义前都需要加上 EXPORT_C修饰符,而在对应的头文件里,这些函数的声明前面需要加上IMPORT_C修饰符。其实两者都是宏,在E32DEF.H中被定义,我发现在这个文件里这两个宏的定义是一致的,哪位能告诉我为什么要分两个不同名字的宏。
在头文件里,代码就象这样:
class CMyEngine : p lic CBase
{
p lic:
IMPORT_C static CMyEngine* NewLC();
IMPORT_C static CMyEngine* NewL();
IMPORT_C ~CMyEngine();
IMPORT_C void Draw(CWindowGc& aActiveGraphicsContext) const;
protected:
IMPORT_C CMyEngine();
IMPORT_C void Constr tL();
};
应用程序中就象这样:
EXPORT_C CMyEngine* CMyEngine::NewLC()
{
CMyEngine* self = new (ELeave) CMyEngine;
CleanupStack::PushL(self);
self->Constr tL();
return self;
}
EXPORT_C CMyEngine* CMyEngine::NewL()
{
CMyEngine* self = CMyEngine::NewLC();
CleanupStack::Pop(self);
return self;
}
好了,到这里我们已经完成90%的工作了。下面你要做的就是在游戏应用程序里加入引擎的引用,然后调用引擎的代码来绘制游戏。这样就好了吗??且慢!怎么始终不能通过bulid??奇怪了,一切都似乎正常,也正常,但始终有Link错误,找了半天,终于发现问题出在前面提到的那个MyEngine.lib文件上。实际上现在做的就是在游戏应用程序里使用调用引擎的方法,这就需要MyEngine.lib这个库,所以必须在游戏应用程序的.mmp文件中加上这么一句:
LIBRARY MYENGINE.LIB
现在就搞定了,一切正常。
呵呵,整个过程就是这样啦,虽然有点复杂,但事情本来就是这样,不是吗?继续努力。
- ››制作Win 7封装的自动应答文件经验
- ››Symbian S60 SocketConnection参数
- ››制作一个优秀的网站 它应该注意哪几点
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››制作一款百度空间的模版,装扮空间时搜“关闭”可...
- ››制作iPhone的SOAP应用的详细教程
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
- ››Symbian 3 版的 Swype 输入法正式上架
更多精彩
赞助商链接