symbian下面制作DLL 的流程

本文档详细介绍了在Symbian环境下创建DLL的基本步骤。包括如何设置工程文件、定义DLL入口点、使用IMPORT_C和EXPORT_C关键字来声明和实现公共接口等。遵循这些步骤可以有效地帮助开发者完成DLL的开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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! 是的,就这么简单![/
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值