游乐游手机版
首页/手机教程/文章详情

VC++ 6.0如何创建与调用动态链接库_创建与调用动态链接库方法说明

时间:2025-04-25 17:39
您想了解如何在vc++++ 6 0中创建和调用动态链接库吗?本文将为您详细介绍vc++ 6 0中创建和调用动态链接库的方法,希望对您有所帮助。静态链接库与动态链接库的区别:静态链接

您想了解如何在vc++++ 6.0中创建和调用动态链接库吗?本文将为您详细介绍vc++ 6.0中创建和调用动态链接库的方法,希望对您有所帮助。

VC++ 6.0如何创建与调用动态链接库_创建与调用动态链接库方法说明

静态链接库与动态链接库的区别:

静态链接库:lib文件中的指令会被直接包含在最终生成的EXE文件中。

动态链接库:dll文件不需要被包含在最终的EXE文件中,EXE文件运行时可以动态地引用和卸载DLL文件。

立即学习“C++免费学习笔记(深入)”;

此外,静态链接库不能包含其他的动态链接库或静态库,而动态链接库可以包含其他的动态或静态库。

VC++支持的DLL类型:

DLL的编写与具体的编程语言及编译器无关,动态链接库在各种环境中广泛使用。VC++支持三种类型的DLL:非MFC动态库、MFC规则DLL和MFC扩展DLL。DLL导出的函数(或变量、类)可以被应用程序调用,而DLL内部函数只能在DLL内部使用,应用程序无法直接调用它们。

导出函数的声明方式:

一种方法是在函数声明类型和函数名之间加上“__declspec(dllexport)”。另一种方法是通过模块定义(.def)文件声明,需要在库工程中添加模块文件,格式如下:

LIBRARY 库工程名称

EXPORTS 导出函数名

DLL的调用方式:

一种是静态调用,由编译系统完成对DLL的加载和卸载。另一种是动态调用,由编程者使用API函数来加载和卸载DLL(DLL加载—DLL函数地址获取—DLL释放)。

所有库工程在编译时必须使用Release方式:

Build—set active configuration—选择库工程的release方式

示例:

VC++ 6.0如何创建与调用动态链接库_创建与调用动态链接库方法说明

一、 函数----创建动态链接库(MFC规则DLL)

New--projects--MFC AppWizard(dll)--Regular DLL using shared MFC DLL //命名MFC_dll

在def文件中添加:函数名(Add_new)

在h文件中添加:外部函数声明 //求和函数,函数名为Add_new

extern "C" declspec(dllexport) int stdcall Add_new(int a,int b);

在cpp文件中添加: 外部函数实现

extern "C" declspec(dllexport) int stdcall Add_new(int a,int b)

{

return a+b;

}

build--set active configuration--win32 release--ok

生成

在根目录下的release文件夹中找到dll,lib文件,并在根目录下找到h文件,这些即为所需文件

VC++ 6.0如何创建与调用动态链接库_创建与调用动态链接库方法说明

二、 函数----调用动态链接库(将MFC_dll.dll和MFC_dll.lib复制到工程所在目录)

//静态调用(.h可以写到.cpp文件中)

new--projects--win32 console application--an empty project

添加h文件:(test.h)

pragma comment(lib,"MFC_dll.lib") //告诉编译器DLL对应的lib文件路径和文件名

extern "C" declspec(dllimport) int stdcall Add_new(int a,int b);//声明导入函数

添加cpp文件:(main.cpp)

include "test.h"

int main()

{

cout

return 0;

}

//动态调用

include windows.h>include

typedef int (* lpAddFun)(int ,int);//定义一个与Add_new函数接受参数类型和返回值均相同的函数指针类型

int main()

{

HINSTANCE hDll;//句柄

lpAddFun addFun;//函数指针

hDll=LoadLibrary("dllTest.dll");//动态加载DLL模块句柄

if(hDll)

{

addFun=(lpAddFun) GetProcAddress(hDll,"Add_new");//得到所加载DLL模块中函数的地址

if(addFun)

{

int result=addFun(2,3);

printf("%d",result);

}

FreeLibrary(hDll);//释放已经加载的DLL模块

}

return 0;

}

VC++ 6.0如何创建与调用动态链接库_创建与调用动态链接库方法说明

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

new---projects---win32 dynamic-link library----an empty project(Sample)

添加sample.h

ifndef SAMPLE_Hdefine SAMPLE_H

extern int dllGlobalVar;

endif

添加 sample.cpp

include "sample.h"include

int dllGlobalVar;

bool APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)

//windows在加载DLL时,需要一个入口函数,就如同控制台或DOS程序需要main函数、win32程序需要winmain函数一样。所以引入一个不做任何操作的缺省DllMain的函数版本。是DLL的内部函数。

VC++ 6.0相关攻略推荐:

VC++ 6.0如何与MATLAB混合编程软件配置_与MATLAB混合编程软件配置方法分享

VC++ 6.0无法打开新建工程的原因说明

VC++ 6.0无法打开新建工程的解决步骤分享

VC++ 6.0如何创建与调用动态链接库_创建与调用动态链接库方法说明

希望本文对您如何在VC++ 6.0中创建和调用动态链接库有所帮助。如果您喜欢这篇文章,请继续关注PHP中文网站的VC++ 6.0专区,获取更多相关内容。

来源:https://www.php.cn/faq/1291464.html
上一篇keep取消训练计划教程 下一篇拼多多怎么不接收物流通知
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
职工之家官网登录入口
手机教程 · 2026-07-08

职工之家官网登录入口

职工之家官网入口支持统一身份认证与双重验证码登录,兼容主流浏览器和无障碍访问。平台汇集各级工会视频资源,界面简洁,搜索与收藏功能便捷,内容更新稳定。服务覆盖机关、企业及退休职工,支持多语言字幕与手语翻译。

百度云盘手机端扫描纸质文档功能使用教程
手机教程 · 2026-07-08

百度云盘手机端扫描纸质文档功能使用教程

百度网盘手机App自带扫描功能,可通过首页上滑“文档扫描”卡片或右上角“+”号进入。拍摄后自动识别边缘并矫正,无需手动调整,支持多页连续扫描,一键导出为PDF格式保存至网盘,操作简便且快捷。

三星手机开启护眼模式的方法
手机教程 · 2026-07-08

三星手机开启护眼模式的方法

三星手机自带护眼模式(EyeComfortShield),无需第三方App,可通过系统设置、控制中心快捷开关或搜索开启,支持色温调节、定时自动启停及自适应蓝光过滤,有效缓解眼部疲劳。

百度输入法词库导入方法教程
手机教程 · 2026-07-08

百度输入法词库导入方法教程

百度输入法导入词库有三种方式:直接导入标准TXT词库、批量造词保留拼音信息、新建词库容器实现逻辑隔离。手机端则通过词库备份恢复路径从文本导入。文件编码需为UTF-8或ANSI,每行一个词。

网上车管所申请免检及申领合格标志流程
手机教程 · 2026-07-08

网上车管所申请免检及申领合格标志流程

符合6年内或10年内非营运小微型客车或摩托车的车辆,可通过“交管12123”APP在线申领检验合格标志。操作前须确认车辆可免检、无违法记录、交强险有效。电子标志即时生成,纸质标志3个工作日内寄达,补领支持邮寄或自取。