【原】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中的静态数据