这个时候我们需要三个文件,头文件(.h)、导入库文件(.lib)、动态链接库(.dll),具体步骤如下:

1、首先我们把 .h 与 .lib/.a 文件复制到程序当前目录下,然后再把dll文件复制到程序的输出目录,

2、下面我们在pro文件中,添加 .lib 文件的位置: LIBS+= -L D:/hitempt/api/ -l myDLL

-L 参数指定 .lib/.a 文件的位置

-l 参数指定导入库文件名(不要加扩展名)

另外,导入库文件的路径中,反斜杠用的是向右倾斜的

3、在程序中include头文件(我试验用的dll是用C写的,因此要用 extern "C" { #include "dll.h" } )

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

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

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


动态库的编写:

vs2008中,头文件中每个函数的声明前都需要加extern "C" __declspec(dllexport) 这样的前缀。

extern "C" __declspec(dllexport) int mytest(int a,int b);

qt中不需要加了,但是要包含这个vs2008的头文件