Visual studio创建C/c++静态库

news2024/10/7 20:27:20

参考文章:
1.visual studio 创建 C/C++静态库和动态库
2.visual studio 2015创建静态库
3.Linux下C++/C 编译生成.a 或者.so 库文件
4.Visual Studio创建并使用静态库(.lib)
可以结合链接1和链接4,链接4主要看图形,链接1看步骤,创建静态库。
##########################################################

5.visual studio lib和dll的编译生成与调用
6.编译生成 C++ 库文件
7.C++源代码文件编译成库文件visual studio 2015

一、静态库

1、创建静态库

创建项目:

文件 → 新建 → 项目 → visual c++ → win32程序(项目命名为staticlib) → 下一步→ 静态库(其他默认即可) → 完成

注意:这个项目名称是什么,最后生成的静态库名称就是什么。

2.设置中间目录、输出目录、生成日志文件、配置类型、解决方案配置和解决方案平台

创建静态库以后,需要点击右侧解决方案中的项目名的属性(画蓝圈圈的这一个),点击配置属性,点击常规,就可以找到中间目录、输出目录和生成日志目录。
当然在常规中,还可以看到配置类型,如果是静态库,配置类型就会是静态库(.lib);如果在建立工程时选择的是空项目,并且为了运行main函数程序,这里的配置类型会显示为应用程序(.exe)
在这里插入图片描述

中间目录设置成以下格式:

$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\obj\

输出目录设置为以下格式:

$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\

生成日志文件设置为以下格式:

$(SolutionDir)$(Platform)\$(Configuration)\$(ProjectName)\obj\$(MSBuildProjectName).log

图1
这里解决方案配置是选择的Release,解决方案平台这里选择的是x64

创建头文件

建立一个头文件来对静态库将要导出的函数来进行声明
点击项目名字/工程名字,比如staticlib → 右键 → 添加 → 新建项 → visual c++ → 头文件(文件命名为header.h)
在header.h文件中键入

#pragma once
//因为c++会名称摧毁,所以这里extern 函数时必须制定为C的格式,所以这里加了“C”
extern "C" int add(int a, int b);

3.创建cpp文件并且生成静态库文件

创建一个c++文件来对静态库将要导出的函数进行定义
点击项目staticlib → 右键 → 添加 → 新建项 → visual c++ → c++文件(文件命名为source.cpp)
在source.cpp文件中键入:

//其中iostream必须在stdafx.h之前引入,否则会出错
#include <iostream>
#include "stdafx.h"
#include "header.h"

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

把这几个部分生成完以后,
以上全部完毕后,左键点击工程名或者项目名字,这里举个例子:工程名字或者项目名字为cjson_serial_de(下图中画红圈的部分),点击 生成;或者在工具栏中点击生成–>生成解决方案(下图中红圈和篮框标记的);想重新生成,也可以重新生成

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/19c2b068dd0f4a1593a4b463af4eb124.png

生成静态库成功标志
在这里插入图片描述
即可看到这个项目所生成的Lib文件,也就是我们即将调用的Lib文件。这里生成的静态库文件的名字为Json2Struct.lib

错误处理1:

严重性 代码 说明 项目 文件 行 错误 C1853 “x64\Release\staticlib.pch”预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反) staticlib D:\C++\microsoft_Visual_studio2015_project\cjson_serial_de_ver3_package\staticlib\staticlib\cJSON.c 1

解决办法1:C++编译器不兼容C文件的预编译头。因此,可以将C文件设置为不适用预编译头。在VS2015中选中C文件,在右键菜单中选择“属性”,之后在属性页窗口的左侧“配置属性”中选择“C/C+±>预编译头”,在右侧的“预编译头”栏中选择“不适用预编译头”,如下图所示。

在这里插入图片描述

注意1:

上面创建的头文件和CPP文件都是在工程目录下:
在这里插入图片描述
包含这三个文件的目录是工程目录。

注意2:

在这里插入图片描述
head文件夹下添加的hpp、h文件和文件夹,会被放到工程目录下。
同理,
如果在源文件文件夹下添加的cpp文件和文件夹,会被放到工程目录下。

注意3:

Lib文件具体位置查看:在x64—>Release---->工程名文件---->静态库文件

4.使用静态库

在设置好中间目录、输出目录、生成日志文件、配置类型、解决方案配置和解决方案平台以后,

配置头文件路径:这里表示 在当前工程目录下和当前工程目录下的 json文件夹目录下搜索头文件
在这里插入图片描述
加入链接库路径:这里表示 在当前工程目录下的 lib文件夹目录下搜索静态库名字
在这里插入图片描述
在静态库目录下加入静态库:这里表示 在当前工程目录下的 lib文件夹目录下搜索Json2Struct.lib静态库
在这里插入图片描述
然后导入静态库以后,就可以每次使用这些库函数,只使用其头文件,而不导入cpp代码了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOs的环境和配置

centos如果我们想要登录怎么办&#xff1f; 我们可以使用Xshell的远程登录 就像这样 这个就是Xshell远程登录&#xff0c;我们可以ssh root你的主机ip 然后输入密码就可以登录 就像这样 然后输入你的密码 就登录上来了&#xff0c;然后就可以进行你的操作 但是我们还可以直…

SOLIDWORKS CSWA/CSWP常用认证考试

SOLIDWORKS助理工程师CSWA认证 考试时间&#xff1a;180分钟 认证总分&#xff1a;240分 及格分数&#xff1a;165分以上 SOLIDWORKS专业工程师CSWP认证 考试时间&#xff1a;200分钟 认证总分&#xff1a;318分 及格分数&#xff1a;229分以上 SOLIDWORKS专业高级工程师CS…

一文迅速掌握开发框架是什么

在经济迅猛发展的今天&#xff0c;办公自动化已经成为潮流。应用快速开发框架可以为企业提质增效、做好数据管理、实现数字化发展。那么&#xff0c;开发框架是什么&#xff1f;带着这个问题&#xff0c;我们今天一起在本文中寻找答案吧。 一、了解低代码技术平台服务商 在产业…

自动化面试题2

一、画出【集电极开路】、【电压输出】、【互补输出】、【线性驱动输出】原理图 二、二进制、八进制、十进制以及十六进制之间的转化 三、PLC是什么&#xff0c;并简述其优点和缺点 可编程控制器&#xff08;Programmable Logic Controller&#xff09;是计算机编程的一种&…

浏览器 v8 pwn

背景知识 浏览器框架 它是⼀个多进程IPC的程序, 不同的进程管理不同的内容, browser process: 主进程rander process: 负责控制渲染内容GPU process: 负责渲染内容utility process: 标签⻚进程plugin process: 插件进程 每个插件, 每个标签页都是单独的进程, 有属于自己的P…

【ChatGLM-6B】清华开源的消费级显卡大语言模型,本地部署与测试

chatGLM-6B 官方代码&#xff1a;https://github.com/THUDM/ChatGLM-6B官方博客&#xff1a;https://chatglm.cn/blog论文&#xff1a; 2210.GLM-130B: An Open Bilingual Pre-trained Model &#xff08;开源的双语预训练模型&#xff09;2103.GLM: General Language Model Pr…

【iOS开发-响应者链Responder Chain】

文章目录0.0 前言1 响应者链&#xff08;Responder Chain1.1 响应者1.2 响应链事件1.3 响应者对象1.3.1 常见的响应者对象1.3.3 UIResponder1.3 UITouch1.3.1 UITouch的属性1.3.2 UITouch的方法1.4 UIEvent1.4.2 获取touch1.5 完整的响应者链1.5.1寻找响应者的hitTest方法1.5.2…

【深度学习】rnn是什么?循环神经网络是什么?RNN前向传播。

文章目录循环神经网络1.循环神经网络原理2.使用Numpy实现RNN层的前向传播3.RNN存在的问题4.小结循环神经网络 通常卷积神经网络 适合处理图像问题&#xff0c;然而通常适合处理自然语言的网络是循环神经网络。rnn是所有基本网络&#xff0c;就像cnn 是很多复杂网络的基本原型。…

项目管理知识点学习

项目管理&#xff0c;验收需要做的事情&#xff0c;验收汇报ppt 验收汇报PPT包含内容&#xff1a; 项目背景&#xff08;金额&#xff0c;招投标时间&#xff09;项目功能完成情况验收内容专家评审 竣工验收材料&#xff1a;详细设计和测试报告 项目风险管理&#xff0c;外来…

Betaflight BN880 GPS 简单测试

Betaflight BN880 GPS 简单测试1. 源由2. 窗台对比测试3. 开阔区域测试3.1 GPS安装位置3.1.1 BN880 GPS 机尾打印支架 安装位置3.1.2 BN880 GPS 机头固定 安装位置3.1.3 M8N GPS 机尾打印支架 安装位置3.2 M8N模块历史记录3.3 BN880模块第一次&#xff08;机尾安装&#xff09;…

Golang 哈希表详解

哈希表介绍 ​ 一个映射&#xff0c;也成为关联数组&#xff0c;其实是一个由唯一键组成的集合&#xff0c;而每个键必然关联一个特定的值。这种键到值的关联关系称为映射&#xff0c;若在键到值的关联使用hash计算&#xff0c;就是哈希表&#xff0c;映射至少支持三个操作&am…

每日做题总结——day01

目录 选择题 for循环 指针数组 位段 getchar 大小端存储 进制与格式控制符 位运算 数组指针 二维数组的存储 计算二进制中1的个数 斐波那契数列求递归次数 编程题 删除公共字符 排序子序列 倒置字符串 选择题 for循环 解析&#xff1a;该题主要看for…

react face to face

React面试题 创建一个react项目 1.全局安装create-react-app npm install -g create-react-app 2.创建项目 create-react-app myapp 3.局部安装&#xff0c;可以直接用npx npx create-react-app myapp 4.进入文件夹 cd myapp 5.启用项目 npm start&#xff08;开发模式下运行&…

浅谈DNS-rebinding

为啥突然要总结一下这个很老的知识点&#xff0c;我也不知道&#xff0c;可能太菜了&#xff0c;闲下来总得学点什么~ DNS Rebinding 0x01 攻击简介 DNS Rebinding也叫做DNS重绑定攻击或者DNS重定向攻击。在这种攻击中&#xff0c;恶意网页会导致访问者运行客户端脚本&#xff…

springboot-参数校验

SpringBoot 中使用 Valid 注解 Exception 全局处理器优雅处理参数验证 注解Valid的主要作用是用于数据效验&#xff0c;可以在定义的实体中的属性上&#xff0c;添加不同的注解来完成不同的校验规则。Controller类中在参数中添加Valid注解来开启效验功能Valid配合 Spring 会抛…

2023年4月10日下午总结和近日感悟

技术和钱 人生&#xff0c;活到现阶段&#xff0c;已于一月前&#xff0c;深感技术就是这么回事&#xff0c;不再像以前那样为学习某样东西而不问来由&#xff0c;闷头去学&#xff08;也许是因为即将步入下一个人生阶段&#xff09;。虽然&#xff0c;乐于也想去接受新技术&a…

centos7下基于nginx+uwsgi部署Django项目

文章目录一&#xff1a;基础环境介绍&#xff1a;二&#xff1a;部署环境安装配置&#xff1a;1.基础依赖环境安装2.安装wegt&#xff0c;vim&#xff0c;unzip等必须命令3.安装python与pip&#xff08;或者python多版本管理工具pyenv等&#xff09;4.安装nginx5.安装uwsgi三&a…

json和CMake简单入门

Json 介绍 Json是一种轻量级的数据交换格式&#xff08;也叫数据序列化方式&#xff09;。Json采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 Json 成为理想的数据交换语言。 易于人阅读和编写&#xff0c;同时也易于机器解析和生成&#xff…

Binder基本知识

1&#xff1a;IPC 原理 从进程角度来看 IPC 机制 每个 Android 的进程&#xff0c;只能运行在自己进程所拥有的虚拟地址空间。对应一个4GB 的虚拟地址空间&#xff0c;其中 3GB 是用户空间&#xff0c;1GB 是内核空间&#xff0c;当然内核空间的大小是可以通过参数配置调整的…

网络安全之密码学

目录 密码学 定义 密码的分类 对称加密 非对称加密 对称算法与非对称算法的优缺点 最佳解决办法 --- 用非对称加密算法加密对称加密算法的密钥 非对称加密如何解决对称加密的困境 密钥传输风险 密码管理难 常见算法 对称算法 非对称算法 完整性与身份认证最佳解决…