WEB开发网
开发学院手机开发Symbian 开发 在 Symbian 中动态加载 DLL 的方法 阅读

在 Symbian 中动态加载 DLL 的方法

 2010-02-22 20:55:00 来源:WEB开发网   
核心提示:CleanupStack::Pop(self);return self;}CDllTry* CDllTry::NewLC() {CDllTry* self = new(ELeave) CDllTry();CleanupStack::PushL(self);self->ConstructL();return sel

CleanupStack::Pop(self);

return self;

}

CDllTry* CDllTry::NewLC() {

CDllTry* self = new(ELeave) CDllTry();

CleanupStack::PushL(self);

self->ConstructL();

return self;

}

TBool CDllTry::TestMethod() {

return ETrue;

}

CDllTry::CDllTry() {}

CDllTry::~CDllTry() {}

void CDllTry::ConstructL() {

ii=99; //可以是随便的一个数

}

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

二、实现测试程序

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

RLibrary lib;

TLibraryFunction Create= NULL; //函数指针

if( lib.Load ( _L("DllTry.dll ") , _L("z:\system\") ) != KErrNone) //动态导入DLL

User::Exit( 40 );

//至此,导入完成!

Create=lib.Lookup ( 1 ); //获得第一个导出函数

iDllTry= (CDllTry*) Create(); //利用这个函数实例化CDllTry

if( !iDllTry )

User::Exit( 41 );

大家知道,在一定条件下(用同一编译器等)我们可以通过指针(当然引用也行)调用DLL文件中声明的类的虚函数。代码如下:

if(!iDllTry->TestMethod () )

User::Exit(43);

提示:

1、 在导出函数前必须加EXPORT_C;

2、 在.exe或.app中引用的.dll中的成员函数一定要为虚函数(virtual);

3、 .dll文件生成后在D:Symbian6.1Series60Epoc32Releasewinsudeb类似的目录下;

4、 千万别忘了在.exe或.app工程里加入DllTry.h文件;

5、 第一个UID用来标志dll文件,第二个是自己向Symbian申请的。

大家自己试一试吧!

在这个小测试程序中还存在很多问题,我对Rlibrary和描述符的用法也是一知半解。欢迎大家批评指正,我的QQ是540827425(因工作原因可能很少在线,大家海涵!)。

上一页  1 2 

Tags:Symbian 动态 加载

编辑录入:coldstar [复制链接] [打 印]
赞助商链接