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

参考文章:
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代码了。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值