读书人

【转】Qt调用dll中的效能函数

发布时间: 2012-09-09 09:27:54 作者: rapoo

【转】Qt调用dll中的功能函数

DLL 优点

-------------------------------------

  1、扩展了应用程序的特性;

  2、可以用许多种编程语言来编写;

  3、简化了软件项目的管理;

  4、有助于节省内存;

  5、有助于资源共享;

  6、有助于应用程序的本地化;

  7、有助于解决平台差异;

  8、可以用于一些特殊的目的。windows使得某些特性只能为DLL所用。

?

转载:http://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html

?6?typedef?int?(*Fun)(int,int);?//定义函数指针,以备调用
?7?int?main(int?argc,char?**argv)
?8?{
?9?????QApplication?app(argc,argv);
10?????QLibrary?mylib("myDLL.dll"); ??//声明所用到的dll文件
11?????int?result;
12?????if?(mylib.load()) ? ? ? ? ? ? ?//判断是否正确加载
13?????{
14?????????QMessageBox::information(NULL,"OK","DLL?load?is?OK!");
15?????????Fun?open=(Fun)mylib.resolve("add"); ? ?//援引 add() 函数
16?????????if?(open) ? ? ? ? ? ? ? ? ?//是否成功连接上 add() 函数
17?????????{
18?????????????QMessageBox::information(NULL,"OK","Link?to?Function?is?OK!");
19?????????????result=open(5,6); ? ? ?//这里函数指针调用dll中的 add() 函数
20?????????????qDebug()<<result;
21?????????}
22?????????else
23?????????????QMessageBox::information(NULL,"NO","Linke?to?Function?is?not?OK!!!!");
24?????}
25?????else
26?????????QMessageBox::information(NULL,"NO","DLL?is?not?loaded!");

27 ? ? ? ? return 0; ?//加载失败则退出

28}

)

?下面是隐式调用的实例代码:

//由于是C版的dll文件,在C++中引入其头文件要加extern "C" {},注意
?4?{
?5?????????#include?"dll.h"
?6?}
?7?int?main(int?argv?,char?**argv)
?8?{
?9????????QApplication?app(argv,argv);
10??? ? ? HelloWordl();??????????//调用Win32?API?弹出helloworld对话框
11??? ? ? qDebug()<<add(5,6);????//?dll?中我自己写的一个加法函数
12??? ? ??return?0; ?//完成使命后,直接退出,不让它进入事件循环
13?}复制代码

还是隐式调用方便啊,直接就可以调用dll中的函数...

分类:?Qt

读书人网 >编程

热点推荐