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 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,文件生成。
更多精彩
赞助商链接