C/C++跨平台开发1-windows和linux中的类库
基本概念:
什么是库:
在windows平台和linux平台下都大量存在着库。
本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。
静态库:在程序链接的时候使用,链接器会将程序中使用的函数代码从库文件中拷贝到应用程序中。
一旦链接完成,在执行程序的时候就不需要静态库了。
由于每个使用静态库的应用程序都需要拷贝所用函数的代码,所以静态链接的文件会比较大。
动态库(共享库):程序的链接时候并不像静态库那样在拷贝使用函数的代码,而只是作些标记。
然后在程序开始启动运行的时候,动态地加载所需模块。
所以,应用程序在运行的时候仍然需要共享库的支持。
WINDOWS:
在windows中,
静态库表现为.lib文件;
动态库表现为.dll文件,还有一个.lib文件包含被dll导出(使用__declspec(dllexport))的函数名称和位置等信息。.lib只在编译时需要,运行时不需要。
该伴生.lib文件在cmake中被称为ARCHIVE,需要注意的是Cmake生成动态库(shared)时,如果没有任何东西被__declspec(dllexport)导出将不会生成.lib文件。
LINUX:
在linux中,
静态库通常表现为.a文件;
动态库表现为.so文件;
总结:
发布类库通常以动态库(共享库)的形式发布,
在windows中、动态库发布项一般包括:
include:保存用到的头文件;
bin:保存.dll文件;
lib:保存动态库对应的.lib文件;
在linux中、动态库发布项一般包括:
include:保存用到的头文件;
lib:保存.so文件;
C/C++跨平台开发1-windows和linux中的类库的更多相关文章
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
由于ASP.NET Core框架在本质上就是由服务器和中间件构建的消息处理管道,所以在它上面构建的应用开发框架都是建立在某种类型的中间件上,整个ASP.NET Core MVC开发框架就是建立在用来实 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
微软在千禧年推出 .NET战略,并在两年后推出第一个版本的.NET Framework和IDE(Visual Studio.NET 2002,后来改名为Visual Studio),如果你是一个资深的 ...
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [中篇]
我们在<上篇>利用dotnet new命令创建了一个简单的控制台程序,接下来我们将它改造成一个ASP.NET Core应用.一个ASP.NET Core应用构建在ASP.NET Core框 ...
- windows和linux中搭建python集成开发环境IDE——如何设置多个python环境
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 【转】windows和linux中搭建python集成开发环境IDE
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- 工具WinSCP:windows和Linux中进行文件传输
工具WinSCP:windows和Linux中进行文件传输 2016-09-21 [转自]使用WinSCP软件在windows和Linux中进行文件传输 当我们的开发机是Windows,服务器是Lin ...
- windows与linux中的mysql配置主从
最近在给学生讲解数据库的主从配置,由于学生电脑里面装的虚拟机是linux的,但是本机的系统是windows的,所以需要用windows中的mysql与linux中的mysql进行主从配置.下面说一下主 ...
随机推荐
- 中电金信:金Gien乐道 | 4月要闻速览,精彩再回顾
中国电子党组副书记.总经理李立功一行调研中电金信 4月10日,中国电子党组副书记.总经理李立功一行赴中电金信进行调研,深入听取了中电金信经营发展情况.研发工作及"源启"行业 ...
- 浅谈 IoT 如何助力制造业企业实现数字化落地
物联网作为新一代信息技术的重要组成部分,正在加速渗透到各行各业,成为经济社会数字化转型的关键支撑.根据中商产业研究院发布的<2022-2027 年中国物联网市场需求预测及发展趋势前瞻报告> ...
- Anaconda中的Spyder软件设置为中文教程
Anaconda中的Spyder软件设置为中文教程 第一步:工具栏中Tools --> Preferences 第二步:第二栏的 Application--> 第二个选项卡Advance ...
- Qt编写物联网管理平台50-超强跨平台
一.前言 跨平台的需求,除了是用户的需求外,也是为了适应日益增长的国产操作系统的发展的需要,当前国产操作系统发展的如火如荼,100%都是围绕linux系统展开,说的好听点就是站在巨人的肩膀上开发,不好 ...
- UML之修饰符
1.可见性修饰符 面向对象思想中有一个重要概念是封装,封装意味着对象中成员的"可见性"是不同的.这里的对象通常指类和包,而它们的可见性通过可见性修饰符进行定义. 在UML中,类对象 ...
- 祝大家这周圣诞快乐!!本周进军多模态!😀From LLMs to MLLMs:😜Exploring the Landscape of Multimodal Jailbreaking
从LLMs到MLLMs:探索多模态越狱攻击的前景 禁止盗用,侵权必究!!!欢迎大家积极举报 ①脆弱性代表:越狱攻击(恶意指令/训练&解码干预). ②最近的越狱攻击: 整体说:构建越来越复杂场景 ...
- Windows10 环境下使用 Cmake 和 MinGW-w64 编译安装 OpenCV 4.0.1
Windows10 环境下使用 Cmake 和 MinGW-w64 编译安装 OpenCV 4.0.1 翻译 搜索 复制
- spark (四) RDD概念
目录 1. RDD基本概念 1.1 弹性 1.2 分布式 1.3 数据集 1.4 数据抽象 1.5 不可变 1.6 可分区.并行计算 2. WordCount为例,看RDD特性 3. RDD的五大属性 ...
- SINE:上下文示例驱动,打造真正的通用分割模型 | NeurIPS'24
来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: A Simple Image Segmentation Framework via In-Context Examples 论文地址:http ...
- Windows安全加固(一)
目录: 1.在win ser2016中如何管理重命名administrator,禁用GUEST 2.禁用GUEST账户 3.系统不显示上次登录的账户名. 4.清理系统无效账户. 5.按用户类型分配账号 ...