WEB开发网
开发学院手机开发Symbian 开发 Symbian平台下制作dll&lib并在应用程序中使用引擎... 阅读

Symbian平台下制作dll&lib并在应用程序中使用引擎

 2010-05-31 19:34:00 来源:WEB开发网   
核心提示:// requirement for E32 DLLsEXPORT_C TInt E32Dll(TDllReason){return KErrNone;}这个是程序的入口,你会发现这个函数和游戏应用程序里的同名函数有些不同,Symbian平台下制作dll&lib并在应用程序中使用引擎(2),那就是EXPORT_C修饰符

// 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

现在就搞定了,一切正常。

呵呵,整个过程就是这样啦,虽然有点复杂,但事情本来就是这样,不是吗?继续努力。

上一页  1 2 

Tags:Symbian 平台 制作

编辑录入:coldstar [复制链接] [打 印]
赞助商链接