编写Symbian动态加载DLL

http://www.rosoo.net/a/mobile_symbian/201007/9804.html 

 

一、编写动态链接库

首先建立一个工程文件DllTry.mmp内容如下:

 

  1. TARGET DllTry.dll 
  2. TARGETTYPE dll 
  3. UID 0x1000008d 0x2000118d 
  4.  
  5. SOURCEPATH ..\src 
  6. SOURCE DllTry.cpp 
  7.  
  8. USERINCLUDE . ..\inc 
  9.  
  10. SYSTEMINCLUDE \epoc32\include 
  11. LIBRARY euser.lib 
  12.  
  13. EXPORTUNFROZEN 

建立bld.inf文件,如下:

PRJ_MMPFILES

..\src\DllTry.mmp

 

头文件DllTry.h,如下:

 

  1. #ifndef __DLL_TRY_H 
  2. #define __DLL_TRY_H 
  3.  
  4. #ifndef __W32STD_H__ 
  5. #include <w32std.h> 
  6. #endif 
  7.  
  8. #ifndef __E32STD_H__ 
  9. #include <E32STD.H> 
  10. #endif 
  11.  
  12. #ifndef __E32BASE_H__ 
  13. #include <e32base.H> 
  14. #endif 
  15.  
  16. class CDllTry : public Cbase { 
  17. public: 
  18.        static CDllTry* NewL(); 
  19.        static CDllTry* NewLC(); 
  20.        virtual TBool TestMethod(); 
  21.        TInt ii; 
  22.        CDllTry(); 
  23.        ~CDllTry(); 
  24. private: 
  25.        void ConstructL(); 
  26. }; 
  27.  
  28. EXPORT_C CDllTry* Create(); //声明导出函数 
  29.  
  30. #endif 

代码文件DllTry.cpp,如下:

 

  1. #include "DllTry.h" 
  2. //入口 
  3. EXPORT_C TInt E32Dll(TDllReason) { 
  4.                      return KErrNone; 
  5. } 
  6. //实例化CDllTry 
  7. EXPORT_C CDllTry* Create() { 
  8.                      return CDllTry::NewL(); 
  9. } 
  10.  
  11. CDllTry* CDllTry::NewL() { 
  12.                      CDllTry* self = NewLC(); 
  13.        CleanupStack::Pop(self); 
  14.        return self; 
  15. } 
  16. CDllTry* CDllTry::NewLC() { 
  17.        CDllTry* self = new(ELeave) CDllTry(); 
  18.        CleanupStack::PushL(self); 
  19.        self->ConstructL(); 
  20.        return self; 
  21. } 
  22.               TBool CDllTry::TestMethod() { 
  23.        return ETrue; 
  24. } 
  25. CDllTry::CDllTry() {} 
  26. CDllTry::~CDllTry() {} 
  27. void CDllTry::ConstructL() { 
  28.        ii=99; //可以是随便的一个数 
  29. } 

然后,编译,把头文件DllTry.h复制到测试程序的inc目录,把DllTry.dll复制到某一特定目录(如c:\下)。

 

二、实现测试程序

随便建立一个工程,在想导入DLL的地方输入代码如下:

 

  1. RLibrary lib; 
  2. TLibraryFunction Create= NULL; 
  3. if( lib.Load ( _L("DllTry.dll") , _L("c:\\") ) != KErrNone) 
  4.   User::Exit( 40 ); 
  5.  
  6. Create=lib.Lookup ( 1 ); 
  7. Create(); 

 

转载于:https://www.cnblogs.com/zelda/archive/2010/09/24/1834085.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值