【lib.dll.a.so】Windows和Linux两个系统下的库文件

1.静态库&&动态库

Windows平台下:静态库后缀为.lib,动态库后缀为.dll

Linux平台下:静态库格式为lib**.a,动态库格式为lib**.so

谈论两者区别之前,需要对程序编译和运行有一个大致认识:
代码想要输出结果,需要经过代码编译和可执行程序运行,就是编译和运行(链接)这两步。

两种类型的库在其中起着不同的作用,这也就是为什么有时候代码编译通过,但是无法运行(eg:缺失dll)

静态库和动态库的区别:
静态库在编译过程中就已经引用并链接到了,有问题编译这一步就会报错;动态库在编译过程中只是起到一个简单的引用,可以理解为单纯检查有没有引用,但是在可执行程序运行的过程中会进行链接。

编译:以一个函数为例,编译这个过程只检查这个函数声明与否,并不检查函数是否实现

2.Windows 11平台

编译器用的是VScode,编译套件用的是MSVC(一开始用的是mingw,但是生成的库怎么给我默认搞成Linux下的lib.a了,后来改成MSVC)

vscode下可以安装一个插件Output Colorizer,这个可以给output添加一些颜色,方便查看

在这里插入图片描述

就用很简单的代码结构来试验,

在这里插入图片描述

Ctrl+shift+p:打开cmake configure,下面会出现选择编译器和生成调试按钮

在这里插入图片描述

(1)直接用cpp

main.cpp

#include "../header/add.h"

int main()
{
    int result = 0;
    int a = 1, b = 2;
    result = add(a, b);
    cout << result << endl;
}

add.cpp

int add(int a, int b)
{
    return a + b;
}

add.h,头文件就是负责声明的

#include <iostream>
using namespace std;

int add(int a, int b);

cmakelists.txt:

cmake_minimum_required(VERSION 3.5)

project(Cmake_test)

add_executable(main src/main.cpp src/add.cpp)

没有用到任何库文件,只是将两个cpp文件生成了一个main.exe可执行程序

思考一个问题:c++为什么要用头文件?

当然可以不写头文件,只在main.cpp中声明一下int add()就好,但是不符合规范,使用头文件能减少重复
这个add.h头文件中就只有一个add函数声明,无法体现。假设需要100个函数,如果还不用头文件就需要在所有需要用到某个函数的cpp文件中声明,工作量极大,如果这时还要修改某个函数的实现…更是离谱

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/131948.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拍照打闪光灯,图片出现亮度分层的原因分析

1、问题背景 上周有读者咨询了一个图像异常的问题。拍照打闪光灯&#xff0c;图片出现亮度分层&#xff0c;一半过曝一半偏暗&#xff0c;问题现象如下图所示&#xff0c;本文主要分析一下&#xff0c;出现此问题现象的原因。 2、问题分析 读者那边反馈说是限制了 sensor 的最…

单片机第三季-第五课:GPIO控制LED

目录 1&#xff0c;GPIO数据手册 1.1&#xff0c;端口配置寄存器 ​1.2&#xff0c;端口输入数据寄存器和端口输出数据寄存器 ​1.3&#xff0c;端口位设置/清除寄存器 1.4&#xff0c;端口位清除寄存器 2&#xff0c;原理图分析和MDK工程 3&#xff0c;写代码通过GP…

华为防火墙二层透明模式下双机热备负载分担配置(两端为路由器)

这种模式只做负载分担&#xff0c;不能是主备备份&#xff0c;因为主备备份模式下&#xff0c;备设备会把vlan down掉&#xff0c;如果是主备备份模式&#xff0c;那在主挂后&#xff0c;备的状态在切换过程中先起vlan&#xff0c;再建立ospf邻接&#xff0c;那业务会断线较久&…

Labview利用声卡捕获波形

一般的计算机上自带的声卡&#xff0c;均既有A/D功能&#xff0c;又有D/A功能&#xff0c;就是一款具备基本配置的数据采集卡&#xff0c;并且技术成熟&#xff0c;性能稳定。 后台如下&#xff1a;

前端开发学习指南

前端是一个看似入门门槛不高&#xff0c;但要学好很难的领域。前端的知识体系庞杂又松散&#xff0c;技术演进快&#xff0c;如果摸不清脉络的话很容易陷入盲人摸象的困境甚至跑偏。 其实只要掌握了正确的方法&#xff0c;学习前端和学好前端就只是个时间问题&#xff0c;希望下…

Vatee万腾的科技决策力奇迹:Vatee科技决策力的独特之选

在金融投资的复杂领域中&#xff0c;Vatee万腾以其独特的科技决策力创造了一场真正的奇迹。这不仅是一种引领投资者走向成功的选择&#xff0c;更是一种开启新时代的科技决策奇迹。 Vatee的科技决策力背后蕴藏着强大的智慧和创新。通过大数据分析、智能算法的运用&#xff0c;V…

熊海CMS 靶场

熊海CMS 靶场 0x01 前言 初步了解cms&#xff0c;Content Management System 内容管理系统。它是一种用于创建、编辑、管理和发布内容的软件程序或工具。内容管理系统通常用于网站、博客、企业内部系统等各种应用中&#xff0c;可以帮助用户管理和发布各种类型的内容&#xf…

100V耐压内置MOS ESOP8 40V输入转5V 2.1A恒压输出

100V耐压内置MOS ESOP8 40V输入转5V 2.1A恒压输出 SC9102 是一款宽电压范围降压型 DC-DC 电源管理芯片&#xff0c;内部集成使能开关控制、基准电源、误差放大器、 过热保护、限流保护、短路保护等功能&#xff0c;非常适合宽电压输入降压使用。 SC9102 零功耗使能控制&…

asp.net学院网上报销系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net学院网上报销系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 asp.net学院网上报销系统 应用技术…

jacoco插桩源码,看这一篇就够了

知识储备 众所周知&#xff0c;jacoco的功能主要分成两块&#xff1a; jacoco agentjacoco cli 其中jacoco agent主要用来对业务方服务进行插装&#xff0c;而cli则提供一些工具对插桩数据进行处理&#xff0c;比如dump&#xff0c;merge,report等&#xff0c;今天我们着重通…

计算机毕设 大数据工作岗位数据分析与可视化 - python flask

文章目录 0 前言1 课题背景2 实现效果3 项目实现3.1 概括 3.2 Flask实现3.3 HTML页面交互及Jinja2 4 **完整代码**5 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要…

作用域插槽slot-scope

一般用于组件封装&#xff0c;将使用props传入组件的数据再次调出来或者单纯调用组件中的数据。也可用于为组件某个部分自定义样式以及为某次使用组件自定义样式。 直接拿elementui的el-table举例&#xff1a; <template><el-table v-loading"loading&q…

55. 右旋字符串(第八期模拟笔试)

55. 右旋字符串&#xff08;第八期模拟笔试&#xff09; 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a;错误经验吸取 原题链接&#xff1a; 55. 右旋字符串&#xff08;第八期模拟笔试&#xff09; https://kamacoder.com/problempage…

spring6-国际化:i18n | 数据校验:Validation

文章目录 1、国际化&#xff1a;i18n1.1、i18n概述1.2、Java国际化1.3、Spring6国际化1.3.1、MessageSource接口1.3.2、使用Spring6国际化 2、数据校验&#xff1a;Validation2.1、Spring Validation概述2.2、实验一&#xff1a;通过Validator接口实现2.3、实验二&#xff1a;B…

伦敦金冬令时开市时间怎样调整

在刚刚过去的一周&#xff0c;欧美的金融市场已经正式进入了冬令时&#xff0c;这对伦敦金市场的交易时间也产生了影响。由于美国于今年11月5日(星期日&#xff09;开始正式实施冬令时间&#xff0c;所以香港的伦敦金平台的交易时间也随之而有所调整。 从今年11月6日开始&#…

体力属性在重生奇迹MU中的演变史

我相信&#xff0c;在任何一个网络游戏中都有体力这种属性&#xff0c;它本身就是血量的另一种表达&#xff0c;先天体力有优势的职业&#xff0c;往往就是后期成长较高&#xff0c;这已经是网游中一种常态&#xff0c;因为高血在PK中占据优势&#xff01;重生奇迹MU同样如此&a…

FiRa标准——MAC实现(二)

在IEEE 802.15.4z标准中&#xff0c;最关键的就是引入了STS&#xff08;加扰时间戳序列&#xff09;&#xff0c;实现了安全测距&#xff0c;大大提高了测距应用的安全性能。在FiRa的实现中&#xff0c;其密钥派生功能是非常重要的一个部分&#xff0c;本文首先对FiRa MAC中加密…

Haproxy实现七层负载均衡

目录 Haproxy概述 haproxy算法&#xff1a; Haproxy实现七层负载 ①部署nginx-server测试页面 ②(主/备)部署负载均衡器 ③部署keepalived高可用 ④增加对haproxy健康检查 ⑤测试 Haproxy概述 haproxy---主要是做负载均衡的7层&#xff0c;也可以做4层负载均衡 apache也可…

光刻掩膜版怎么制作的?

光掩膜版基本上是 IC 设计的“主模板”。掩模版有不同的尺寸。常见尺寸为 6 x 6 英寸一般的掩膜版由石英或玻璃基板组成。光掩膜版涂有不透明薄膜。更复杂的掩模版使用其他材料。 一般来说&#xff0c;术语“photo mask”用于描述与 1X 步进机或光刻系统一起使用的“主模板”。…

Xmind常用快捷键

Xmind 是什么&#xff1f; Xmind 是一款全功能的思维导图和头脑风暴软件。像大脑的瑞士军刀一般&#xff0c;助你理清思路&#xff0c;捕捉创意。 全功能&#xff1a;提供9种专业的的思维导图结构&#xff0c;丰富的模板和配色&#xff0c;精美的贴纸和插画&#xff0c;还有演…
最新文章