在VC++ 6.0中,如何构建并使用动态链接库?这是一个许多用户在操作过程中常遇到的疑问。下面,iefans小编将详细解析VC++ 6.0创建与调用动态链接库的具体步骤和方法。
在VC++ 6.0中,如何构建并使用动态链接库?这一问题困扰了不少使用者。下面,iefans小编将详细讲解VC++ 6.0创建与调用动态链接库的步骤,供有兴趣的朋友们参考。

静态链接库与动态链接库区别:
静态链接库lib中的指令直接嵌入到了最终生成的EXE文件内。
动态链接库,即dll文件,无需纳入最终生成的EXE文件之内。在EXE文件运行过程中,它能够灵活地调用和卸载dll文件。
静态链接库中不得再加入其他动态链接库或静态库,然而,动态链接库则允许嵌入其他动态或静态库。
VC++支持的DLL:
动态链接库的创建并不依赖于特定的编程语言或编译器,这类库在各个地方都能找到。VC++平台支持三种类型的DLL,包括非MFC动态库、遵循MFC规范的DLL以及扩展MFC的DLL。应用程序可以通过调用DLL中的导出函数(或变量、类)来使用这些功能;然而,DLL内部的函数仅限于在DLL程序内部使用,应用程序无法直接调用它们。
导出函数的声明方式:
在函数的声明中,需要在类型与名称之间插入“_declspec(dllexport)”标识。
此外,还有另一种通过模块定义文件(.def)进行声明的方式,这种情况下,需要在库工程中增加相应的模块文件,其格式规范如下:
LIBRARY 库工程名称
EXPORTS 导出函数名
DLL的调用方式:
这是一种静态的调用方式,由编译系统负责执行对动态链接库(DLL)的加载操作kaiyun.ccm,并在应用程序运行结束后自动进行DLL的卸载处理。
此外,编程者可通过API函数执行DLL的加载与卸载操作,具体流程包括:加载DLL、获取DLL函数地址、最后释放DLL。
所有库工程编译时必须Release方式:
构建—设置生效的配置—挑选库项目的发布模式
示例:

一、 函数----创建动态链接库(MFC规则DLL)
新项目--MFC AppWizard(dll)--常规DLL,采用共享的MFC DLL库--命名为MFC_dll
2. def文件中添加:函数名(Add_new)
在h文件中,需要增加以下内容:对外部函数进行声明,该函数的名称为求和函数,即Add_new。
以C语言编写的接口,通过导出声明,实现了一个名为Add_new的函数,该函数接受两个整型参数a和b,并返回一个整数值,其调用方式遵循__stdcall规范。
4. cpp文件中添加: 外部函数实现
以C语言为标准,声明导出,使用__declspec(dllexport)属性,定义了一个名为Add_new的函数,其返回类型为整型,并接受两个整型参数a和b,调用约定为__stdcall。
return a+b;
构建活动配置,选择win32发布版本,确认无误。
6. 生成
在根目录的release文件夹内,你可以找到所需的dll和lib文件,同时根目录下的h文件也是你需要的内容。

二、关于函数的调用,需将动态链接库MFC_dll.dll和MFC_dll.lib文件复制至项目的工作目录中。
//静态调用(.h可以写到.cpp文件中)
新的项目,是一款基于Win32控制台的应用程序,目前是一个空项目。
2. 添加h文件:(test.h)
编译指令#pragma comment(lib,"MFC_dll.lib")用于指示编译器,DLL所对应的lib文件的具体路径和文件名。
以C语言编写的外部声明,采用DLL导入特性开yun体育app官网网页登录入口,使用_stdcall调用约定,定义了一个名为Add_new的整数类型函数,其参数包括两个整数a和b。
3. 添加cpp文件:(main.cpp)
#include "test.h"
int main()
cout<
return 0;
//动态调用
#include
#include
定义一种函数指针类型,该类型与名为Add_new的函数在参数类型和返回值上完全一致kaiyun全站网页版登录,具体表现为:typedef int (* lpAddFun)(int, int);
int main()
HINSTANCE hDll;//句柄
lpAddFun addFun;//函数指针
动态加载DLL模块,执行LoadLibrary函数,参数为"dllTest.dll",从而获取句柄hDll。
if(hDll)
lpAddFun是通过调用GetProcAddress函数,并传入DLL句柄hDll以及字符串"Add_new",成功获取了所加载的DLL模块中对应函数的地址。
if(addFun)
int result=addFun(2,3);
输出结果值:%d;随后,执行释放操作,以解除对已加载的DLL模块的引用。
return 0;

三、 变量----创建动态链接库(非MFC DLL)
推出新的项目——Win32动态链接库——一个空白的示例项目(Sample)
2. 添加sample.h
#ifndef SAMPLE_H
#define SAMPLE_H
extern int dllGlobalVar;

