|
|
| |
| symbian下面制作DLL 的流程 |
| |
首先咱们假设要封装一个叫做CMyClass的东西。先丛工程文件入手:
MyClass.mmp -------------------
| 代码: |
TARGET MyClass.dll TARGETTYPE dll UID 0x1000008d 0x10004268 //注意,这里换上你的UID SOURCEPATH ..\src SOURCE MyClass.cpp SYSTEMINCLUDE . SYSTEMINCLUDE \epoc32\include SYSTEMINCLUDE \epoc32\include\libc
LIBRARY euser.lib #if defined(WINS) deffile .\MyClassWINS.def #else if defined(ARM) deffile .\MyClassARM.def #endif
NOSTRICTDEF EXPORTUNFROZEN
|
好,一半已经搞定了,再坚持一下。
MyClass.h --------------
| 代码: |
class CMyClass : public CBase { public: // 这些IMPORT_C开头的家伙就是我们可以从别的程序中调用的函数
IMPORT_C static CMyClass* NewL(); IMPORT_C static CMyClass* NewLC(); IMPORT_C ~CMyClass(); public: IMPORT_C void DoSomething(); private: CMyClass(); void ConstructL(); };
|
很晚了,我偷个懒,上面的代码只写了重要的部分,那些个#include什么的麻烦看官们自己补齐吧。
MyClass.cpp -----------------
| 代码: |
// DLL Entry Point。这是最重要的东西,别忘了哦,每个DLL都需要它。 GLDEF_C TInt E32Dll(TDllReason /*aReason*/) { return(KErrNone); }
EXPORT_C void CMyClass::DoSomething() { // 好,我承认,这个函数也许应该叫做DoNothing才对。:-) return ETrue; }
EXPORT_C CMyClass* CMyClass::NewL() { CMyClass* self = NewLC(); CleanupStack::Pop(self); return self; } ...
| 其实大家注意到了,问题关键就在这对IMPORT_C...EXPORT_C上。这些函数就是你的DLL所定义的API接口!
好了,基本完成了,我们编译它!abld build wins udeb
编译结束后,你会在epoc32的那堆目录下找到一个MyClass.lib以及生成的DLL! 是的,就这么简单![/code]
|
| |
|
|
[]
[返回上一页]
[打 印]
[收 藏] |
|
| ∷相关文章评论∷ (评论内容只代表网友观点,与本站立场无关!) [更多评论...] |
|
|