参考文章:
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
这里解决方案配置是选择的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(下图中画红圈的部分),点击 生成;或者在工具栏中点击生成–>生成解决方案(下图中红圈和篮框标记的);想重新生成,也可以重新生成
生成静态库成功标志
即可看到这个项目所生成的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代码了。