zhd320的专栏

在编程中常常会用到别人封装好的dll文件,通常有两张调用的方法

一.隐式的加载时链接

需要xxx.dll文件、xxx.lib文件和xxx.h文件,其中将xxx.dll文件放在exe文件输出的文件夹下(debug文件夹),xxx.lib和xxx.h文件放在工程文件夹下。

(1)先将xxx.h文件添加至工程中(这个文件中有dll文件中函数声明,,格式如

)函数返回类型 函数名(参数列表)

),然后在头文件中加入#include "xxx.h"。

(2)将lib添加到工程中,有如下几种方法:

①LIB文件直接加入到工程文件列表中

  在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入xxx.lib文件即可。

  ②设置工程的 Project Settings来加载DLL的LIB文件

  打开工程的 Project Settings菜单,选中Link,然后在Object/library modules下的文本框中填写xxx.lib文件。

  ③通过程序代码的方式

   可以在xxx.h 文件中加入预编译指令#pragma comment (lib,"xxx.lib")

二.显式的运行时链接

只需要xxx.dll文件,将xxx.dll文件放在exe文件输出的文件夹下(debug文件夹)。

需要添加如下代码

) (参数列表);//和dll文件中定义的函数一致

6. 函数名(参数);//调用函数即可

三.常见的报错信息

Debug Error:Program: …Module:File: i386\chkesp.cLine: 42

解决方法:

定义函数指针(二.显式的运行时链接 中代码第一行)时,声明 typedef 函数返回值类型 (CALLBACK *函数别名)(参数列表)

其中(CALLBACK *也可以是_stdcall,WINAPI)。去掉CALLBACK。(这个问题困扰了我两天,但是还是不清楚原因,去掉winapi后,程序正常,希望有大神可以指点)

如果雨后还是雨,如果忧伤过后还是忧伤,

zhd320的专栏

相关文章:

你感兴趣的文章:

标签云: