VS2019静态库与动态库入门操作指南

这篇具有很好参考价值的文章主要介绍了VS2019静态库与动态库入门操作指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、库的概念

源代码的二进制文件;

二、编译

分为动态编译与静态编译;

1)区别

(1)动态编译不便于发布,静态编译便于发布;

(2)动态编译生成的可执行文件体积较小,静态生成的可执行文件体积较大。

​ Windows中静态库后缀为.lib 动态库后缀为.dll

​ Linux中静态库后缀为.a 动态库后缀为.so

​ 使用静态库后得到的可执行程序在执行时对这个库不再依赖。

​ 使用动态库,便于升级与更新,接口保持不变,就可以通过更新DLL来升级程序,而不用重新 编译程序;

​ 在不同的程序调用相同的库,则在内存里只需要有一份该共享库的实例;

三、静态库的封装与调用

1)使用VS创建静态库项目

VS2019静态库与动态库入门操作指南
VS2019静态库与动态库入门操作指南

2)创建头文件并导出需要的函数或类

(1)创建.h头文件(名称自定);
(2)导出方式确定,以C或C++方式;
(3)选中导出的函数名或类名 快捷键Alt + Enter ,在对应的同名源文件中创建对应函数或类的定义;

VS2019静态库与动态库入门操作指南

3)生成静态库文件

VS2019静态库与动态库入门操作指南

4)新建空项目

(1)将生成的name.lib与name.dll文件复制进新建空项目中;

(2)属性管理器中选择对应解决方案与平台,右击添加附加依赖项;
VS2019静态库与动态库入门操作指南
VS2019静态库与动态库入门操作指南
输入依赖库的名称
VS2019静态库与动态库入门操作指南
(2)在空项目中创建测试

使用program comment(lib,“name.lib”) 加载静态库

extern “C” _declspec(dllimport) 类型 函数名(); 导入C类型静态库

或 _declspec(dllimport) 类型 函数名();导入C++类型静态库

(3)编写函数或类,调用测试
VS2019静态库与动态库入门操作指南
(4)选择解决方案配置与平台,选择调试
VS2019静态库与动态库入门操作指南

四、动态库的封装(C/C++函数导出)

1)使用VS创建动态库项目

VS2019静态库与动态库入门操作指南
VS2019静态库与动态库入门操作指南

2)创建头文件并导出需要的函数或类

(1)创建.h头文件(名称自定);
(2)导出方式确定,以C或C++方式;
(3)选中导出的函数名或类名 Alt + Enter ,在对应的同名源文件中创建对应函数的定义;
VS2019静态库与动态库入门操作指南

3)生成动态库文件

VS2019静态库与动态库入门操作指南

五、动态库隐式调用(C/C++函数调用)

1)新建空项目

(1)新建一个空项目;

(2)将生成的name.lib、name.dll及xx.h文件复制进新建空项目所在的文件夹中;

(3)属性管理器中选择对应解决方案与平台,右击添加附加依赖项name.lib;

(4)右键头文件,添加现有项,将刚刚复制来的xx.h文件添加进入当前项目;
VS2019静态库与动态库入门操作指南
VS2019静态库与动态库入门操作指南
VS2019静态库与动态库入门操作指南
VS2019静态库与动态库入门操作指南

2)连接测试

(1)#include"xx.h"

(2)编写函数测试:

VS2019静态库与动态库入门操作指南

六、动态库显式调用(C/C++函数调用)

1)创建函数指针(类型要与.dll中的函数一致);

typedef int(*name)();

2)定义句柄,用于引用动态库;

HMODULE hdll;
引用动态库;

3)引入window头文件

#include;

4)加载动态库;

LoadLibrary(L"“);或LoadLibraryA(”");

5)调用函数;

auto dll = (name)GetProcAddress(hdll.“函数名”);

6)释放动态库句柄

步骤②中定义的句柄,FreeLibrary(句柄名称);文章来源地址https://www.toymoban.com/news/detail-459264.html

7)设置解决方案配置与平台,要与动态库一致,最后调试运行。

七、动态库封装(C/C++类导出)

1)创建动态库项目

(具体参考本篇文章第四部分的 1))

2)创建头文件并导出需要的类

类的导出,实际是将类中函数进行导出;

(1)创建.h头文件(名称自定);
(2)导出方式确定,以C或C++方式;
(3)选中导出的函数名或类名 Alt + Enter ,在对应的同名源文件中创建对应类中包含的函数的定义;
VS2019静态库与动态库入门操作指南

3)生成动态库文件

VS2019静态库与动态库入门操作指南

八、动态库隐式调用(C/C++类调用)

1)新建空项目

(具体参考本篇文章第五部分的 1))

2)连接测试

(1)#include"xx.h"

(2)写函数测试

VS2019静态库与动态库入门操作指南

九、动态库显式调用(C/C++类调用)

1)创建函数指针(类型要与.dll中的函数一致);

typedef int(*name)();

2)定义句柄,用于引用动态库;

HMODULE hdll;
引用动态库;

3)引入window头文件

#include;

4)加载动态库;

hdll = LoadLibrary(L".dll");或 hdll = LoadLibraryA(“.dll”);

5)调用函数;

auto dll = (name)GetProcAddress(hdll.“函数名”); 注意:在导出的动态库为C++类型时,应填写函数名对应的真实名称,因为C的为函数原名称,C++的则是加上一些符号,这是C++有类和重载的缘故。用depends查看对应的完整名称。

6)释放动态库句柄

步骤②中定义的句柄,FreeLibrary(句柄名称);

“.dll”);

5)调用函数;

auto dll = (name)GetProcAddress(hdll.“函数名”); 注意:在导出的动态库为C++类型时,应填写函数名对应的真实名称,因为C的为函数原名称,C++的则是加上一些符号,这是C++有类和重载的缘故。用depends查看对应的完整名称。

6)释放动态库句柄

步骤②中定义的句柄,FreeLibrary(句柄名称);

7)设置解决方案配置与平台,要与动态库一致,最后调试运行。

到了这里,关于VS2019静态库与动态库入门操作指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GitLab入门指南:上传与下载操作一网打尽

    GitLab是一个基于Git的开源仓库管理系统,提供了一个Web界面的Git存储库管理器,并集成了多种开发工具的功能,如代码审查、问题跟踪、持续集成和持续部署等。GitLab可以在本地服务器上部署,也可以使用其提供的云服务。它广泛应用于软件开发团队,帮助团队成员协作开发

    2024年01月25日
    浏览(51)
  • MySQL入门指南:数据库操作的基础知识

    当谈到关系型数据库管理系统(RDBMS)时,MySQL无疑是最常见和广泛使用的一个。它是一个强大的工具,用于存储、管理和检索数据。在这篇博客中,我们将介绍MySQL的基本知识,包括数据库的操作、数据表的操作以及数据的增删改查~~ 目录 1. 数据库的操作 1.1 创建数据库 1.2 删除

    2024年02月07日
    浏览(101)
  • 【Linux入门指南:掌握开源操作系统的基础知识】

    1. 认识 Linux, 了解 Linux 的相关背景 2. 掌握使用远程终端工具 xshell 登陆 Linux 服务器 3. Linux下基本指令 4. shell命令以及运行原理 本门课程是学习Linux系统编程,你可能要问Linux从哪里来?它是怎么发展的?在这里简要介绍Linux的编辑文章发展史。要说 Linux,还得从UNIX说起。 19

    2024年02月05日
    浏览(86)
  • 从入门到精通:GPS北斗卫星校时服务器 操作指南

    从入门到精通:GPS北斗卫星校时服务器 操作指南 从入门到精通:GPS北斗卫星校时服务器 操作指南 京准电子科技官微——ahjzsz 一、 产品功能 卫星时钟服务器是一款采用GPS或北斗卫星提供高精度网络时间服务的产品。卫星天线安装简便(根据天线所放位置提示实时卫星颗数)

    2024年03月27日
    浏览(50)
  • 学习Nano编辑器:入门指南、安装步骤、基本操作和高级功能

    1.1 关于Nano编辑器 Nano是一个简单易用的文本编辑器,适用于终端环境。它具有轻量级、快速启动和基本功能的特点,非常适合新手使用。 1.2 Nano的起源和特点 Nano最早是Pico编辑器的克隆版本,后来发展成为一个独立且功能更加强大的编辑器。它具有简洁的用户界面、直观的操

    2024年02月04日
    浏览(49)
  • 动态库与静态库

    动态库(Dynamic Library)和静态库(Static Library)是软件开发中常用的两种库文件形式。 动态库:是一组共享的目标代码文件,它们在运行时动态链接到应用程序中。动态库在系统中独立存在,可以被多个应用程序共享。当应用程序运行时,操作系统会加载动态库,并在需要时

    2024年02月08日
    浏览(42)
  • 【Linux】静态库与动态库

    前言 对于C/C++的学习者,我们经常听到C/C++的标准库,我们也经常使用它们,但是我们在使用的时候经常只包含一下头文件,然后就使用了,我们从来没有认真的研究过C/C++的标准库,而且C/C++的头文件中只有声明并没有声明的内容的具体实现,为什么我们只包含头文件就能使

    2024年02月05日
    浏览(53)
  • 【Linux】动态库与静态库

    目录 一、前言 二、静态库与动态库 三、生成静态库 1、生成原理 2、完整过程 3、总结 四、生成动态库 1、环境变量 2、建立软链接 3、配置文件 五、动态库的加载 1、动态库加载的过程 2、动态库地址的理解 3、补充内容  关于动态库与静态库的一小部分前置内容,我曾在文

    2024年02月01日
    浏览(50)
  • 静态链接库与动态链接库

    由于计算机无法直接理解和执行高级语言(C、C++、Java)程序,需要将 高级语言程序 转换为 机器语言程序 (机器语言是用二进制代码表示的、计算机唯一可以直接识别和执行的一种机器指令的集合),通常把这种转换过程叫做 翻译 。 在C/C++中,整个翻译过程可以分为四步

    2024年02月04日
    浏览(48)
  • 【Linux:动态库与静态库】

    静态库( .a ):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。 动态库( .so ):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。 一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表

    2024年02月06日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包