Symbian dll 开发总结
学习总结
一、为什么需要dll?
1.
2.
3.
二、dll的简要介绍
DLL),另一种是静态接口DLL(staticinterface DLL)。
C:\Symbian\9.1\S60_3rd_MR\Examples\Base\DLLs
下面的介绍只针对静态接口DLL,这个是我们开发常用到的!
三、如何使用?
四、如何编写一个dll?
interfacedll,不是吗?)
2.
修改,这时编译工程(buildproject),就可以生成.lib/dll文件,这时就可以用其他的app或exe来测试你的lib/dll了。
对于要导出的函数,我们需要在声明文件(.h)中加上IMPORT_C前缀,在对应源文件(.cpp)中,加上EXPORT_C前缀,看起来像这样:
//.h文件
classCTestDll
:public CBase
public:
CtecDll*NewL();
……
}
//.cpp文件
EXPORT_CCtecDll*
CtecDll::NewL()
self;
3.如果编写完成了,想发布你的dll,去掉mmp文件中的EXPORTUNFROZEN,然后Project->FreezeExports,
然后再编译工程(buildproject)一下,最终发布的dll/lib就生成了。
五、相关自动生成文件介绍
1.
如何实现这种兼容性呢?在该文件中,我们可以看到系统为每个导出的接口分配一个序号,调用程序将根据这个序号来找到对应的函数实现,后加的接口只能在后面附加,序号连续递增,这样就不改变原来接口的序号。
.Def文件的看起来像这样:
EXPORTS
2 NONAME ; intCMailEngine::GetMail(class TDesC8 const&)
例如第二行:
QAEHABVTDesC8:参数类型
//#if defined (WINS)
//
//#elif defined (GCC32)
//
//#else
//
//#endif
2.
3.
注:
WINSCW:
依赖<-------------------------------------------
FAQ:
1.
2.
3.我想在工程中,新添加一个类,然后再导出一些函数,该怎么办?
4.
答:祈祷这样的事情永远不要发生!除了让用户修改,重新编译程序,还不知道有什么好的办法。如果你找到了好的办法,一定要告诉我!
5.
6.
答:不可以!如果一定要呢?详细可以参考下面参考资料的[7][8]
。
7.
参考资料:
[1] Series 60应用程序开发
[2]
http://wiki.forum.nokia.com/index.php/How_to_generate_Import_Library_(.lib)
[3]http://developer.symbian.org/main/documentation/reference/s^3/doc_source/guide/EssentialIdioms/ExportandImportclasses.html
[4]http://developer.symbian.org/main/documentation/reference/s^3/doc_source/guide/EssentialIdioms/FrameworksLibsDlls.html
[5]
http://blog.csdn.net/cheyiliu/archive/2009/10/14/4669233.aspx
[6]
http://blog.csdn.net/yaloe/archive/2007/01/25/1492979.aspx
[7]
http://blog.csdn.net/yaloe/archive/2007/01/25/1492986.aspx
[8]http://dev.csdn.net/article/78324.shtm
转自http://blog.csdn.net/sdy1978/archive/2010/01/27/5260871.aspx