QLibrary 动态加载外部库文件
2012-11-09 16:35
183 查看
/*转载请注明出处,谢谢*/
背景:想搭一个软件系统,包含一个主模块,一堆子模块(用于扩展功能)。主模块是一个可执行程序,子模块为动态库,可以加载在主模块中。
问题:每添加一个扩展功能就要修改一下主模块的源程序,在其中添加头文件,lib文件,然后重新编译。很是麻烦。
目标:主模块读一个配置文件,根据其中的内容,动态加载子模块的DLL,以实现扩展功能灵活配置,而不需要每次都修改和重新编译主模块。
下面是个例子:
子模块代码:
extern "C" __declspec(dllexport) int print2(int a, int b);
int print2(int a, int b) { printf("VideoDecoderDLL printint!\n"); return (a+b); }
主模块代码:
#include <QLibrary> void Shell::Test() { //m_vd->print(); int *out=0; typedef int (*myfun)(int, int); // 定义导出函数类型 QLibrary hdll( "I:/testDll/shell/VideoDecoderD.dll" ); //加载dll,当前目录 if(hdll.load()) { myfun fun1 = (myfun)hdll.resolve("print2"); //用resolve来解析fun1函数 if ( fun1 ) //解析成功则进行运算并提示相关信息 { printf("解析成功\n"); printf("%d\n",fun1(2,3)); } else { printf("解析失败\n"); } } }
目前还没解决如何加载一个类,有知道办法的朋友欢迎留言。
相关文章推荐
- QLibrary 动态加载外部库文件
- JavaScript学习总结(十九)——使用js加载器动态加载外部Javascript文件
- 动态加载外部资源文件
- 动态加载js和css(外部文件)
- 动态加载js和css(外部文件)
- 动态加载外部CSS与JS文件
- js加载器动态加载外部Javascript文件
- 动态加载外部.js文件时候,javascript的执行顺序问题
- 动态加载外部javascript文件
- 动态加载外部javascript文件的函数代码分享
- 动态加载外部 css和javascript脚本 文件
- Silverlight调用WebService 之 Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)
- Silverlight实用窍门系列:2.Silverlight动态加载外部XML指定地址的WebService---(动态加载外部XML文件中指定的WebService地址)
- Web动态加载JS外部文件(script标签)
- 使用js加载器动态加载外部Javascript文件
- 使用js加载器动态加载外部Javascript文件
- Android动态加载外部jar包及jar包中图片等资源文件
- 如何动态加载外部Javascript文件
- 动态加载外部css或js文件