linux 实现c 插件,linux下C++ 插件(plugin)实现技术(二)
3. 在主程序中如何使用使用起来也非常简单,在主程序(main.cpp)中:...#include "pluginhelper.h"#include "polygon.h"...CPluginHelper pluginHelper;pluginHelper.Load( "./plugin", "*.so" );CPolygon * pbase = (CPolygon*)pluginHelper.C
3. 在主程序中如何使用
使用起来也非常简单,在主程序(main.cpp)中:
...
#include "pluginhelper.h"
#include "polygon.h"
...
CPluginHelper pluginHelper;
pluginHelper.Load( "./plugin", "*.so" );
CPolygon * pbase = (CPolygon
*)pluginHelper.Create("CTriangle");
if( 0 != pbase )
{
pbase->area();
}
delete pbase;
pluginHelper.Unload( "./plugin", "*.so" );
首先定义CPluginHelper对象,调用Load方法加载共享库,其中第一个参数是共享库的路径,第二
个参数是共享库的名称,共享库名支持模式匹配,这里表示要加载./plugin目录所有so共享库,
当然也可以是某个具体的共享库名。
随后可以通过CPluginHelper::Create方法,根据类名称创建该类的对象,实现了参数化创建对象
的目的,然后就是对该对象的调用,当不用该对象时,需要调用delete来删除。
最后,调用CPluginHelper::Unload将指定共享库卸载。
本文提供了linux下的实现插件技术的方法,其实下在window下也一样,可以用Loadlibrary代替
dlopen,用GetProcAddress代替dlsym,具体实现就不细说了。
更多推荐
所有评论(0)