当前位置: 代码迷 >> Symbian >> 在Symbian中DLL的制作和调用,该怎么解决
  详细解决方案

在Symbian中DLL的制作和调用,该怎么解决

热度:7734   发布时间:2013-02-26 00:00:00.0
在Symbian中DLL的制作和调用
用Symbian制作DLL,在调用时,直接调用方法,不新建类,这样可以吗?
我用Symbian制作的DLL,必须要新建这个类然后再能调用其中的方法,应该怎样解决

------解决方案--------------------------------------------------------
#include<your_dll.h>就可以了

在mmp文件还要加上你的your_dll.lib才能通过编译
------解决方案--------------------------------------------------------
直接EXPORT一个函数就行了,然后如楼上所说,包含该DLL和头文件。
就可以直接用了。不一定非要建一个类的。
------解决方案--------------------------------------------------------
你可以使用 symbian中的RLibrary类来动态加载dll, RLibrary lib;
lib.load(DllName);

void*(*p)(void*) = lib.lookup(1);
.....

------解决方案--------------------------------------------------------
typedef IPluginBaseA* (* F_GET_PLUGIN)(void);
static IPluginBaseA* PluginLoadLibrary(const char* strLoadAddr, int& pHandle)
{
TBuf8<MAX_FILE_NAME_LENGTH> strAddr;
strAddr.SetLength(MAX_FILE_NAME_LENGTH);
strAddr.FillZ();
strAddr.Copy((TUint8*)strLoadAddr);
strAddr.TrimLeft();
strAddr.TrimRight();
TFileName dll;
dll.Copy(strAddr);

RLibrary libPlugin;
TLibraryFunction pfGetPlugin = NULL;
TInt ncode = libPlugin.Load(dll);
if (KErrNone != ncode)
{
log("failed load: ");
log(strLoadAddr);
pHandle = 0;
return NULL;
}
pfGetPlugin = libPlugin.Lookup(1);
IPluginBaseA* pPluginHandle = (IPluginBaseA*)pfGetPlugin();
pHandle = libPlugin.Handle();
return pPluginHandle;

};

这是我的加载代码。
------解决方案--------------------------------------------------------
定义静态方法,在静态方法中实例化类并调用类方法。
------解决方案--------------------------------------------------------
编写dll只要在开发IDE中按项目向导,就可以创建dll项目,只是别忘了用EXPORT_C 导出你的函数就可以了