C++动态库和静态库的使用方法和区别

动态库和静态库,混合使用下的单例bug 阅读详情

1.简要介绍

①C++中代码有以下三种分发方式:

源码:在工程中需包含引用工程的源文件(.cpp)和头文件(.h),这种方法会导致工程较为庞大。
动态库:只需包含引用工程的dll文件即可,引用工程的头文件和lib库文件可选,通常都会带上。
静态库:只需包含引用工程编译生成的lib文件和头文件,工程看起来较为清爽简洁。代码分发方式

②动态库和静态库的区别

两者各有优缺点,区别如下图:
静态库:当存在a.exe,b.exe和c.exe这三个应用程序模块中都需使用同一个lib库时,会在内存中有多份重复的代码,导致链接时间较长。
动态库:当存在a.exe,b.exe和c.exe这三个应用程序模块中都需使用同一个lib库时,在内存中仅有一份重复的代码。
区别

③执行程序的过程:

常见使用问题:
error C3861:“Add”:找不到标识符,通常是未包含引用函数存在的头文件。
error LNK2019:无法解析的外部符号,通常是引用的静态库lib文件存在问题。
由于找不到DLL.dll文件,通常是当前工程找不到引用工程的动态库dll文件,通常会把引用的dll文件拷贝到当前工程目录下。
执行过程

2.如何使用两种库

①静态库有两种方法:

a.在工程中包含引用工程的头文件和库文件(不推荐使用,不够整洁)

#include "D:\\chenwenxin\\chaofei.h"
#pragma comment(lib,"D:\\chenwenxin\\chaofei.lib")

b.选择项目名->右击属性->分别在C++和链接器中加入include目录和lib目录,再在链接器的输入项中增加lib文件。(推荐)

②动态库的使用:

同①中的b方法,再将引用工程的dll文件拷贝到当前工程的目录下。

【iOS】.h .m .mm .cpp文件 .h .m .mm .cpp文件 阅读详情

相关推荐

静态库与动态库及交叉编译总结及学习较底层编程:动手写一个C语言编译器

C++静态库与动态库 这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。   什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,

benpaobagzb的博客 8083

创建静态库/动态库一定要有头文件吗?为什么?

不一定需要。创建一个库一般处于一下两种目的: 1、把一些相关的代码,打包成一个库,发布给其它的人用。 这中情况是最常见的情况,如写 C 语言用到 libgcc。在这种情况下,你除了提供库文件: 静态库[ windows 下 .lib,linux .a];动态库:[Windows 下 .dll,Linux 下 .so] 之外, 必须提供头文件。头文件是你这个库里面提供了那些接口可以供外界使用。 如果没有头文件,其他人无法使用,因为不知道函数方法的原型! 2、在为某些软件项目写插件,而这些项目软件是公司内部的;

weixin_42073232的博客 9179

C/C++教程 第十章 —— 静态库与动态库

本文详细介绍了C/C++中的静态库和动态库的制作流程,重点讲解了Windows平台上如何创建静态库和动态库,包括静态库的预编译头文件、动态库的.dll和.lib文件,以及动态库的入口点函数。同时,文章还讨论了函数重载、编码问题(如GBK、Unicode、UTF-8的区别)以及进程与线程的基础概念,是C/C++开发者的重要参考资料。

余识- 2918

静态库与动态库

编译静态库和源代码 需要注意源码在库文件的前面。在源文件中也需要包含该头文件。引用静态库时需要添加头文件。

m0_74164503的博客 410

【QT进阶】第十六章 QT动态库与静态库的制作与使用

Qt动态库开发与应用指南 摘要: 本文详细介绍了Qt中动态库的制作与使用方法。主要内容包括: 动态库与静态库的核心区别:从整合方式、内存占用、部署维护到适用场景的分析对比 动态库制作全流程:创建库工程、编写库内容、配置pro文件实现debug/release双版本编译 两种调用方式: 隐式调用:配置pro文件链接库、处理头文件依赖和部署注意事项 显式调用:使用QLibrary动态加载,结合工厂模式实现灵活调用 实际开发技巧:版本号管理、debug标记、跨平台配置等pro文件优化方案 部署要点:动态库文件路径

凉开水白菜的博客 566

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

【ROS2】MOMO的鱼香ROS2(三)ROS2入门篇——ROS2第一个节点

qq_44703886的博客 3614

__declspec(dllexport)与__declspec(dllimport)

区别 他们都是DLL内的关键字,即导出与导入。他们是将DLL内部的类与函数以及数据导出与导入时使用的。 dllexport是在这些类、函数以及数据的申明的时候使用。用他表明这些东西可以被外部函数使用,即(dllexport)是把 DLL中的相关代码(类,函数,数据)暴露出来为其他应用程序使用。使用了(dllexport)关键字,相当于声明了紧接在(dllexport)关键字后...

weixin_37632683的博客 885

matlab物元可拓模型程序,熵权可拓物元模型

1 概述物元分析方法是中国学者蔡文于20世纪80年代提出的用于解决矛盾问题的技术方法,是研究物元及其变化规律,解决现实世界中不相容问题的有效方法,可应用于生态环境,水资源承载力,农用地分级和土地生态水平等综合评价研究中.本文主要介绍了熵权可拓物元模型的相关概念与该模型的建立过程.2 概念2.1 物元物元分析法的主要思想是把事物用"事物,特征,量值"(分别用N,C,V表示)3个要素以有序三元组的形式...

weixin_33823399的博客 4105

C++静态库与动态库

库是写好的、现有的、成熟的、可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。所谓静态、动态是指链接。

永远相信美好的事情即将发生 1599

解密OpenVLA的ActionTokenizer:如何用256个Token控制7维机器人动作

本文深入解析了OpenVLA模型中ActionTokenizer的核心机制。该分词器通过将7维连续机器人动作空间离散化为256个Token,巧妙地解决了大语言模型输出精确控制指令的难题。文章详细阐述了其设计哲学、与Llama-2词表的集成方式,并分析了256个离散区间在精度与效率间的平衡,为机器人视觉-语言-动作控制提供了关键技术桥梁。

weixin_29209801的博客 476

亚马逊(Amazon ads)广告API申请步骤(已经更新完)

你如果是自己的店铺使用,就选择左边的、如果是授权的那种给别人用就选右边的。审核通过了才能进行下一步,我目前就是刚申请完,后续会持续更新!然后会调整到,下面的页面,选择Agency然后右上角点击创建。审核通过会发邮件到你的企业邮箱、时间大概是1-7天左右。输入对应的信息,点击提交审核,就可以开始申请了。1、广告平台跟卖家平台是分开的,这个概念要清楚。2、注册广告一定要用企业邮箱!回到首页,点击成为合作伙伴。注册了以后会跳转到广告。然后再点击加入合作伙伴。然后会弹出下面的页面。

阿泽的博客 5655

Qt 动态库和静态库的创建与使用

前言 c/c++开发中都会用到动态库和静态库。首先动态库和静态库的区别是什么呢? 简单来讲,静态库,如果某个程序需要调用了一个静态库中的方法,在该程序编译时候会将该静态库一起编译进去,即会直接整合到目标程序中,编译成功的可执行文件可独立运行。静态库的扩展名一般为“.a”或“.lib” 而动态库,某个程序在编译的时候,在程序里只有一个“指向”的位置而已,也就是说当可执行文件需要使用到函数库的机制时,程序才会去读取函数库来使用,也就是说可执行文件无法单独运行。 静态库与动态库优缺点大概如下 1、静态库 优点:

kchmmd的博客 1万+

IPCP(IP Control Protocol,IP控制协议)

IPCP(IP Control Protocol,IP控制协议)

天赐好车的博客 754

C++函数级静态库和动态库的制作与使用

函数级静态库和动态库的制作与使用1. 静态库的制作与使用1.1 创建1.2 使用2. 动态库的制作与使用2.1 创建2.2 使用 库的作用: 分离编译 代码重用 分类: 分类 作用 后缀 静态库 一个或多个.o目标文件归档在一个文件中 .a 动态加载库 没有main函数的可执行文件,接口复合API .so 1. 静态库的制作与使用 1.1 创建 文件举例: calc.cpp #include <iostream> #include "calc.h" using na

kuanyew的博客 556

SAP-MM:SAP MM(物料管理)模块 的系统化学习计划

SAP MM模块的系统化学习计划

baidu_35680696的博客 1547

Open3D 基于法线的双边滤波

基于法线的双边滤波是一种用于点云平滑的技术,它结合了点与其邻域点之间的几何距离和法线方向的相似性,从而在去除噪声的同时保留几何特征。这种滤波方法广泛应用于点云处理领域,尤其是在需要保留表面细节和边缘的场景中。

纵马踏花向自由 2500

C++静态库与动态库详解

C++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库...

jane18792808054的博客 362

华为OD机试 - 计算误码率(Python/JS/C/C++ 双机位C卷 100分)

移动通信 网络中的误码率主要是指比特误码率,其计算公式如下:比特误码率 = 错误比特数 / 传输总比特数,为了简单,我们引入字符串来表示误码通信的信息,一个字符错误了,就认为出现了一个误码。我们需要将这两个压缩字符串解压成实际的字符序列,然后逐位比较它们,统计误码(不同字符)的数量。题目给出两个经过压缩编码的字符串,通过解压缩后需要判断两个字符串在解压后的误码率,即对应位置不同的字符数量占总字符数量的比例。输入一个标准的字符串,和一个传输前的字符串,计算误码率。两个解压后的字符串完全相同,没有错误字符。

学Java,找哪吒 2193

C++静态库和动态库的制作与使用——函数级

C++静态库和动态库的制作与使用——函数级1. 静态库的制作与使用1.1 创建1.2 使用2. 动态库的制作与使用2.1 创建2.2 使用3. 动态库与静态库的区别3.1 动态加载与静态加载的区别4. 总结 库的作用: 分离编译 代码重用 分类: C语言编译的流程: 1. 静态库的制作与使用 1.1 创建 文件举例: calc.cpp #include <iostream> #include "calc.h" using namespace std; int main(){ i

Sunrise的博客 414

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Linux--静态库与动态库的创建详解

学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等

君莫笑的博客 1561

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

静态库与动态库混合链接

准备 在linux下,终端完成c/c++的编译运行,如果使用到静态库与动态库,那么如何链接?这里以一个例子来完成讲述。假如当前位于test目录,且有a.h、a.c、b.h、 b.c,以及调用a、b中方法的main.c。 每个文件的内容如下 //a.c文件内容如下 #include<stdio.h> void a(){ printf("The first file a\n"); } ...

acehcl 2318

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android NDK(2、基础知识)

1、.cpp、.h、.c文件的区别1、.cpp和.h文件的由来编译器编译代码的时候首先先编译各模块,然后再将各模块链接为最终的可执行程序 一般来说,一个文件就编译为一个模块 但是,各模块要能链接到一起,必须有一些共同的地方,例如模块A里面有一个函数,模块B想要使用这个函数,它就必须知道模块A的一些信息才行。体现在代码上,就是有些代码必须在几个文件里都写一遍 此时我们将这样的代码写在一个单独的文

androidxiaogang的博客 763

C++静态库和动态库详解(转)

一、什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a,.lib)和动态库(.so,.dll)。 所谓静态、动态是指链接。回顾一下,将一个程序编译成可执行程序的步骤: 编译过程 二、静态库 之所以称为静态库...

柚子树's Blog 866

c++进阶4:动态库与静态库--函数篇

文章目录0.前提(文件内容)1\. 静态库的制作与使用1.1 创建1.2 使用2\. 共享库的制作2.1 创建2.2 使用3\. 动态加载库3.1 创建3.2 使用3.3 动态库(共享库、动态加载库)与静态库的区别3.4 动态加载与静态加载的区别4\. 总结5\. 补充6\. 参考 作用 分离编译 代码重用 分类 分类 作用 后缀 静态库 一个或多个.o目标文件归档在一个文件中 .a 共享库 没有main函数的可执行文件 .so 动态加载库 没有main函数的可执行文件,

Pierce110110的博客 469

C++库工具(框架、静态库和动态库)的介绍及使用

C++库工具的介绍及使用 文章目录C++库工具的介绍及使用前言一、框架和库框架(Framework)和库(Library,简写Lib)的区别二、C++库的分类1.按照获取途径划分标准库和非标准库标准函数库和面向对象类库的区别2.按照性质划分静态库和动态库三、静态库和动态库的创建及使用方法1.静态链接库的生成和使用方法VS下静态链接库的生成:VS下静态链接库的调用2.动态链接库的生成和使用方法动态链接库的分类非MFC动态库的生成动态链接库的调用方式四、OpenCV库的配置举例OpenCV库中的内容及手动配置O

weixin_43143159的博客 1247
上一篇: 记录VS中项目输出目录设置方法
下一篇: C++创建动态库的方法
照书抄代码
博客等级 码龄8年 32粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值