kaiyun全站网页版登录 VC++ 6.0如何创建与调用动态链接库_创建与调用动态链接库方法说明

发布于:25-08-05 播放次数:

在VC++ 6.0中,如何构建并使用动态链接库?这是一个许多用户在操作过程中常遇到的疑问。下面,iefans小编将详细解析VC++ 6.0创建与调用动态链接库的具体步骤和方法。

在VC++ 6.0中,如何构建并使用动态链接库?这一问题困扰了不少使用者。下面,iefans小编将详细讲解VC++ 6.0创建与调用动态链接库的步骤,供有兴趣的朋友们参考。

 VC++ 6.0 调用动态链接库教程 _vc6.0mfc制作登录界面_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方式:

构建—设置生效的配置—挑选库项目的发布模式

示例:

vc6.0mfc制作登录界面_ VC++ 6.0 调用动态链接库教程 _VC++ 6.0 动态链接库创建方法

一、 函数----创建动态链接库(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文件也是你需要的内容。

 VC++ 6.0 调用动态链接库教程 _vc6.0mfc制作登录界面_VC++ 6.0 动态链接库创建方法

二、关于函数的调用,需将动态链接库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;

 VC++ 6.0 调用动态链接库教程 _VC++ 6.0 动态链接库创建方法 _vc6.0mfc制作登录界面

三、 变量----创建动态链接库(非MFC DLL)

推出新的项目——Win32动态链接库——一个空白的示例项目(Sample)

2. 添加sample.h

#ifndef SAMPLE_H

#define SAMPLE_H

extern int dllGlobalVar;