WEB开发网
开发学院手机开发Symbian 开发 Symbian DLL 用法小结 阅读

Symbian DLL 用法小结

 2010-02-28 00:00:00 来源:WEB开发网   
核心提示:...private:// These functions are notvisible by the// clients of the DLL and thendo not need// the IMPORT_C tagCMyEngine();void ConstructL();voidSomePrivateMeth

...

private:

// These functions are notvisible by the

// clients of the DLL and thendo not need

// the IMPORT_C tag

CMyEngine();

void ConstructL();

voidSomePrivateMethod();

}

实现文件

编写DLL工作本身没有什么需要复杂的地方,但是有两个重要的

地方需要留意:

(1)E32Dll()函数必须实现

(2)另外一个特殊的宏,EXPORT_C,应该加在每个导出函数实现

的前面。

例如:

// This function is mandatory for all DLLs

EXPORT_C TInt E32Dll(TDllReason)

{

return KErrNone;

}

// This function is exported: The EXPORT_C tag shall beused.

EXPORT_C void MyPublicMethod()

{

...

}

// This one is not: The EXPORT_C tag shall not be used.

void SomePrivateMethod()

{

// Do Something

}

MMP文件

DLL的MMP文件应该有以下特点

(1)定义项目(project)的类型是dll

(2)使用正确的UID2的值(0x1000008d)

在开发过程中,你也应该通过EXPORTUNFROZEN告诉编译环境,DLL接口还没有定稿,还可以随时修改。

例如:

TARGET MyEngine.dll

TARGETTYPE dll

UID 0x1000008d

...

EXPORTUNFROZEN

把DLL接口定稿(Freezing DLL)

一旦你完成了DLL的开发,在你发行你的DLL版本之前,应该把接口定稿(Freezing),这样可以确定将来发行的DLL可以向下兼容。

通过将项目的MMP文件中的EXPORTUNFROZEN关键字去掉,用常规的方法重新建立DLL,来实现DLL库的定稿。这时候会有“.def文件不存在”的编译警告信息出现,不要紧,继续就建立当前项目,在项目编译完毕以后,你可以用如下命令定稿:

abld freeze

注意:

所有的ARM平台共享一个.def文件,但是对于wins模拟器和winscwCodeWarrior环境来说,他们有不同的.def文件。一旦项目已经定稿,重新生成makefile,这时候导入的lib会直接通过定稿的.def,文件生成。

Tags:Symbian DLL 用法

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