/*转载请注明出处,谢谢*/

背景:想搭一个软件系统,包含一个主模块,一堆子模块(用于扩展功能)。主模块是一个可执行程序,子模块为动态库,可以加载在主模块中。

问题:每添加一个扩展功能就要修改一下主模块的源程序,在其中添加头文件,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 动态加载外部库文件相关推荐

  1. Spark动态加载外部资源文件

    Spark动态加载外部资源文件 1.spark-submit --files 动态加载外部资源文件 之前做一个关于Spark的项目时,因项目中需要读取某个静态资源文件,然后在本地IDEA测试一切皆正常 ...

  2. android 加载三方so的方法_Android开发教程之动态加载so库文件的方法

    Android开发教程之动态加载so库文件的方法,我想对于静态加载 so 库文件,大家都已经很熟悉了,这里就不多说了.在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静 ...

  3. CrossWalk - Android 动态加载so库文件

    转自: https://segmentfault.com/a/1190000002919135 之前看到简书Android客户端使用的编辑器,甚是喜欢,它的优雅以及高性能的特点让我爱不释手,很想自己也 ...

  4. spark-submit --files 动态加载外部资源文件

    在做spark时,有些时候需要加载资源文件,需要在driver或者worker端访问.在client模式下可以使用IO流直接读取,但是在cluster模式下却不能直接读取,需要如下代码: val is ...

  5. android jar 加入图片,Android动态加载外部jar包及jar包中图片等资源文件

    Android动态加载外部jar包及jar包中图片等资源文件 Android应用程序由Java开发,因此Java中许多实用的特性,在Android中也有体现.动态加载Class,也就是外部jar包,在 ...

  6. Linux动态加载共享库,Linux共享库的动态加载(附测试案例)

    共享库的动态加载是指可以在程序运行的过程中去加载所需的共享库.常用于某些系统或者应用程序的自动升级. 在C语言的源程序动态加载共享库,需要调用一组特殊的函数,它们被声明于一个专门的头文件dlfcn.h ...

  7. JBoss 系列十四:JBoss7/WildFly如何加载外部的文件或properties文件

    http://www.tuicool.com/articles/M7ZR3y 原文 http://blog.csdn.net/kylinsoong/article/details/12623997 主 ...

  8. 利用firebug动态加载online js文件

    为什么80%的码农都做不了架构师?>>>    我们在对网页进行调试时,可以利用firebug的命令行,对网页进行脚本的调试.对于原生js当然没有问题,可是,有时候我们想要使用js类 ...

  9. Android热修复技术初探(三):动态加载外部资源

    前面已经介绍了Android平台上的几种ClassLoader,这几种ClassLoader都有各自的使用场景,有了这些基础知识之后,才能更好地理解以及探究Android热修复技术.首先我们来探究怎么 ...

最新文章

  1. Strategy Analytics:物联网安全令人担忧,成本节约效益也不确定
  2. PTA基础编程题目集-7-15 计算圆周率
  3. 获取另一个驱动的设备结构体_《rt-thread驱动框架分析》-i2c驱动
  4. react中webpack.config.js配置lessless-loader less
  5. Android开发之RadioButton选择改变字体颜色与背景色
  6. mysql 汇总行_MySQL查询汇总行的值并对结果进行排序?
  7. github-markdown-css 使用简解,markdown文案格式优化(笔记)
  8. 学习笔记 第六周 第一篇
  9. SpringCloud Alibaba - Nacos 作为配置中心 读取Yaml配置信息
  10. 如何开发一个基于Docker的Python 应用
  11. 2008是中国的奥运年
  12. 颜色六位码和八位码表示
  13. 数据分析达到精准营销的路径分析
  14. 知乎spark与hadoop讨论
  15. 【问题记录与解决】jupyter notebook 无法重命名,无法运行测试代码 || jupyter notebook 中常用的两个快捷键。
  16. w7电脑蓝屏怎么解决_电脑蓝屏怎么解决win7
  17. 解决Orcale登录界面乱码问题(linux)
  18. 根据出生日期获取农历信息
  19. 电脑使用技巧(按键失灵的几种解决方法)
  20. Fiddler Response中Raw显示乱码的解决方式

热门文章

  1. 开启和关闭(禁用)IE8加速器功能的办法
  2. OpenCV 升降维度
  3. java中String类是什么_Java中的String类
  4. 计算机二级为什么无法登录,解决因登录失败而无法启动SQL服务
  5. 一文看懂软件测试方法和规范
  6. postgresql安装指南
  7. 温故而知新-面向对象的PHP
  8. JFrame 居中显示
  9. [UVALive 7143]Room Assignment(Dp)
  10. ASP.NET MVC IOC 之AutoFac攻略