使用RLibrary加载DLL
来源:互联网 发布:java输出倒九九乘法表 编辑:程序博客网 时间:2024/05/29 11:11
使用RLibrary加载DLL
- 详细描述
下列代码片段演示了如何动态加载一个多态的DLL。对静态DLL来说,程序在启动时自动加载到RAM中。也可以在任何不需要的时候自动卸载。一个多态的DLL可以通过调用RLibrary::Load()加载,以及通过RLibrary::Close()卸载。多个多态DLL显示给客户端的可以是同样的接口。这种DLL一般由提供插件特性的框架来使用。
MMP文件
需要下列链接库和能力:
CAPABILITY NoneLIBRARY euser.lib
多态DLL
- DLL的MMP文件中的UID2不能为0x1000008d(该UID2用于共享DLL),具体取值可以根据多态DLL的类型而定(如套接字服务器协议模块的UID2值为0x1000004A)
- DLL所拥有的能力必须等于或大于加载它的程序。当加载时,DLL运行在加载进程的能力级。因此这个DLL必须要有所有能执行它的程序的能力,即使对另外一部分程序里面的代码并不需要用到其中的这种能力
- DLL必须完成定义的虚接口类
- DLL必须要有一个EXPORTED静态函数,其返回一个该接口类的示例
DLL的头文件应为:
class MMyDll { public: virtual TInt Data() = 0; }; class CMyDll : public MMyDll { public: IMPORT_C static MMyDll* NewL(); virtual TInt Data(); };
DLL源文件:
EXPORT_C MMyDll* CMyDll::NewL() { return new CMyDll(); } TInt CMyDll::Data() { return 1; }
动态加载DLL
#include <e32std.h> RLibrary library; // Load dllUser::LeaveIfError(library.Load(_L("CMyDll"))); // Find exported functionTLibraryFunction NewL=library.Lookup(1);MMyDll* mydll=(MMyDll*) NewL(); // Close the librarylibrary.Close(); TInt value = mydll->Data();delete mydll;
- 使用RLibrary加载DLL
- symbian 使用RLibrary加载DLL
- 使用LoadLibrary加载DLL
- QT的DLL加载使用
- QLibrary的使用 加载dll 使用dll中的导出方法
- (转)显式加载DLL并使用 DLL 中的类
- (转)显式加载DLL并使用 DLL 中的类
- 显式加载DLL并使用 DLL 中的类
- 显式加载DLL并使用 DLL 中的类
- [转] 显式加载DLL并使用 DLL 中的类
- c++显式加载dll并使用DLL的类
- c++显式加载dll并使用DLL的类
- c++显式加载dll并使用DLL的类
- 使用.local 重定向DLL 加载路径
- 如何使用DLL函数动态加载-静态加载
- 如何使用DLL函数动态加载-静态加载
- 建立WIN32 DLL,并使用静态加载和动态加载
- dll加载
- addScalar用法
- FireFox中Element.focus()方法无效的解决方法
- 关于电源和地的处理
- 树:Struts2 + JSON + Extjs Tree
- web页面性能调整
- 使用RLibrary加载DLL
- java操作excel文件()
- loongson & MySQL 如何处理 /etc/lsb-base-logging.sh: line 72: RUNLEVEL: unbound variable
- Nehe OpenGL AppWizards with vs 2008
- ORACLE SQL性能优化系列(十)
- Configure and compile Python with Zlib
- 参禅
- SQL查询连续号码段
- SQL SERVER 2000 导入导出数据