ITPub博客

首页 > Linux操作系统 > Linux操作系统 > symbian下面制作DLL 的流程(转)

symbian下面制作DLL 的流程(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-05-20 13:54:04 0 删除 编辑
首先咱们假设要封装一个叫做CMyClass的东西。先丛工程文件入手:

MyClass.mmp
-------------------
代码:

TARGET MyClass.dll
TARGETTYPE dll
UID 0x1000008d 0x10004268 //注意,这里换上你的UID
SOURCEPATH ..src
SOURCE MyClass.cpp
SYSTEMINCLUDE .
SYSTEMINCLUDE epoc32include
SYSTEMINCLUDE epoc32includelibc

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]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10294527/viewspace-126077/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    3481
  • 访问量
    3019829