×
Namespaces

Variants
Actions

静态DLL

From Nokia Developer Wiki
Jump to: navigation, search
Article Metadata

文章
kcomex 在 29 Apr 2007 创建
最后由 hamishwillee 在 11 Jan 2012 编辑

如何写静态DLL

静态DLL,也成为“共享库”(shared library)。他们可以在不同的应用程序之间共享具有通功能的代码,而这部分代码在内存中仅仅需要被载入一次,只需一次就可以被多个应用程序使用。这样的特性,就对静态DLL的使用造成了一个障碍:静态DLL中不能有静态可写数据。


当一个程序启动的时候,该程序所依赖的静态DLL将会被一同载入内存中,如果该DLL被存放在ROM中,那么将不会被载入内存。随着使用该静态DLL的调用者逐步地增多、减少,当该静态DLL的调用者的数目减少到0的时候,它将会被自动释放。


静态DLL接口提供了一系列独有的函数,而系统中,不能有两个具有相同输出函数的DLL并存。静态DLL接口的扩展名通常为.dll,他们一般都集成了应用程序的引擎代码等。

DLL头文件

所有需要被外部访问到的函数,在DLL的头文件中都需要被定义为“导出”函数, 在源文件(.cpp)中用(EXPORT_C)声明,在头文件(.h)中用(IMPORT_C)声明。

例如:

class CMyDll : public CBase
{
public:
IMPORT_C static CMyDll* NewL();
IMPORT_C static CMyDll* NewLC();
IMPORT_C void ExampleFunction();
 
private:
CMyDll();
void ConstructL();
};

DLL的具体实现文件

在S60平台下,每一个DLL的入口函数均为E32Dll(),它也被称为程序的入口。

EXPORT_C TInt E32Dll( TDllReason )
{
return KErrNone;
}
 
 
EXPORT_C void ExampleFunction( )
{
// Do something..
}

要建立静态DLL,MMP文件中的TARGETTYPE,需要设置为dll。例如:TARGETTYPE dll。

This page was last modified on 11 January 2012, at 05:26.
33 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×