2011-07-13 wince上面plg插件生成

本文详细介绍了使用VS6.0进行插件开发的过程,包括使用GUIDGEN.EXE生成唯一ID,创建DLL工程,设置输出路径生成PLG文件,以及如何将插件导入并使用的方法。

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

工具:  D:\Tools\GUIDGEN.EXE  这是安装vs6.0时的一个工具,只要生成的一个独一无二的ID号。

生成ID后,用作plg的ID字串,如:#define XML_PLG_ID  _T("66D1345F-8341-41eb-A09E-A1C7A82E4C2D")

对外通常有一个interface的头文件,以if.h 结尾,里面是一个结构体,成员都是函数指针。如:

typedef HANDLE (*pLoad)    (LPCTSTR lpFileName);
。。。

typedef struct _tag_XML_FUN
{
 pLoad    Load;

。。。

}XML_FUN;

而在 .c文件里面,提供以下函数:

//先完成你想做的事

HANDLE Load(LPCTSTR lpFileName)
{
 CMarkup* mark = new CMarkup;

 mark->Load(lpFileName);
 return (HANDLE)mark;
}

//生成此结构体的一个全局变量

XML_FUN g_XmlFun; extern "C"
{

void* GetInterface()//对外的函数
{

//将你的函数的入口赋给结构体的成员
 g_XmlFun.Load    =Load    ;

。。。

//将结构体的地址返回

return (void*)&g_XmlFun;
}

};

这样,GetInterface()会将结构体的地址返回调用者。

那么如何将其生成plg文件呢?

在创建工程时,在application settings时候,application type 选择DLL。

然后创建成功

在设置工程属性时:

填写output文件为plg:

当执行Built时候,就可以在指定的路径生成plg文件了。

那么怎样使用呢?

这还用到另外一个封好的插件,但可以进到里面看其实现方式。

先在应用程序里面调用下面的函数,将最开始的插件导入:

#define PLUGIN_VECTOR_NAME _T("PlgVector.plg") //刘工做的插件

static Plugin_Man_Fun* LoadPluginCenter()
{
 TCHAR szPath[MAX_PATH] = _T("");
 GetAbsPathName(PLUGIN_VECTOR_NAME, szPath);
 HMODULE hMod = LoadLibrary(szPath);
 if(hMod == NULL)
 {
 // MessageBox(szPath);
  return NULL;
 }
 pGetPluginMan pFun = (pGetPluginMan)GetProcAddress(hMod, _T("GetPluginMan"));
 return pFun();
}

这个插件只是用vector<PluginMan> _plgs 此向量来做一个插件管理,管理插件的查找,加入,删除等等。库的导入是用

上面的LoadLibrary(szPath)和 GetProcAddress()来实现。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值