继续上一篇插件设计的问题。之前提到了,动态的加载扩展库,以实现扩展库功能。这次来看看使用Qt如何实现这个功能,当然这里只是讨论Qt本身提供的功能,不设计具体内容。虽然只是简单的例子,但是大致的脉络是清楚的。
首先介绍下我实作的测试项目:
TestInterface,是接口类,可以从它派生子类,实现实际的功能,为了简洁我就不做实际功能了;
TestApp,应用程序,可以加载扩展库,实现扩展库的具体功能,在此,我也省略了,只做一个演示;
TestRealInterface,实际接口类,完成真正的功能,当然也是示例了。
Qt的QLibrary可以用来动态加载库,示例代码如下:
QLibrary myLib("mylib");
typedef void (*MyPrototype)();
MyPrototype myFunction = (MyPrototype) myLib.resolve("mysymbol");
if (myFunction)
myFunction();
在动态库中定义一个导出函数,调用resolve来调用动态库的实际导出函数。有了入口函数,可以得到实际的接口类,来扩展接口功能。
typedef int (*AvgFunct