【原】SymbOS中的库文件

 Symbian OS库类型:静态库和动态链接库

静态库:构建时被链接到程序中--提取库函数,且做为调用程序的可执行部分。

动态链接库:运行时刻才加载和链接。

 

创建静态库:

1,代码写入头文件、源文件。

2,MMP文件

引用:

在应用程序mmp中加入:STATICLIBRARY mystatic.lib

 

创建Dll:

1,在.h文件中,对希望提供给dll用户使用的函数,在前面加IMPORT_C

2,在cpp文件中,对希望提供给dll用户使用的函数,在前面加EXPORT_C

3,包含入口点E32DLL()

//MyDll.h

class DLLClass

{

  IMPROT_C DLLClass();

  IMPORT_C void Func1();

  IMPORT_C void Func2();

  void Func3();

  virtual void Func4();

};

//MyDll.cpp

EXPORT_C void Func1()

{

}

EXPORT_C void Func1()

{

}

void Func3()

{

}

void Func4()

{

}

TInt E32Dll(TDllReason a)

{

return (KerrNone);

}

Note:所有的虚函数都被导出

4,完成mmp文件,加上EXPORTUNFROZEN

 

几个概念:

构建dll时,实际生成了两个文件。一个dll文件,一个lib文件。lib文件称为导入库。

可使用RLibrary手工将dll加载到内存,不必链接到导入库。

 

多态Dll:

是一个只带有单个导出函数的普通dll。该函数为一个创建对象实例并将对象返回的静态函数。

//h file

IMPORT_C CmyployDll *newmypolyL();

class CmyDerivedpolyPlugin : public Cmypoly

{

}

//cpp file

EXPORT_C CmypolyDll *newmypolyL()

{

  return new (ELeave) CmyDerivedpolyPlugin;

}

//implement rest of class member function here

 


r1:各种常用的uid总结

r2:dll的各种构建问题,例如冻结输出、def文件

r3:IMPORT_C等会映射到编译器特有的关键字上。

r4 : ECOM总结

r5 : Dll中的静态数据

posted @ 2010-05-02 21:32  秋天的风  阅读(246)  评论(0编辑  收藏  举报