VC 静态库与动态库静态库创建与使用

Posted fzxiaoyi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC 静态库与动态库静态库创建与使用相关的知识,希望对你有一定的参考价值。

1.新建项目,创建项目和解决方案

StaticLibrary  这是静态库项目

G:C++LearnLibrary  Library文件夹用于存放库相关文件,包含静态库与后面的动态库工程和解决方案

StaticLibraryDemo  静态库解决方案名称

技术图片

 2.点击下一步,出现如下界面

选择静态库,选择预编译头,如果需要使用MFC就勾选上,最后点击完成

技术图片

 3.然后VS左边解决方案管理器会显示相关文件

这就是个最简单的静态库,编译生成下

技术图片

4.文件夹生成了相关文件

解决方案目录:

技术图片

解决方案目录下,项目文件夹StaticLibrary,Debug解决方案调试目录下面就存放了编译生成的.lib静态库

技术图片

 

 技术图片

5. 给静态库项目添加一个c++类CMyMath供外部程序使用

然后分别添加二个函数,一个成员函数MathAdd 用于加法计算,一个全局函数MathSub 用于减法计算,最后编译生成

技术图片

 

技术图片

6. 给解决方案添加一个新的控制台项目用于测试静态库,创建完成后设置为启动项目

技术图片

7. Test.CPP中添加相关代码

 1 // Test.cpp : 定义控制台应用程序的入口点。
 2 //
 3 
 4 #include "stdafx.h"
 5 #include "../StaticLibrary/MyMath.h"  //静态库CMyMath头文件
 6 
 7 #pragma comment(lib,"../Debug/StaticLibrary.lib") //引入静态库.lib文件
 8 int _tmain(int argc, _TCHAR* argv[])
 9 {
10     //使用静态库中CMyMath类,调用其中的MathAdd方法
11     CMyMath myMath;
12     int nResult = myMath.MathAdd(1,2);
13     printf("1 + 2 = %d
",nResult);
14     //调用静态库中的全局函数MathSub
15     nResult = MathSub(5,1);
16     printf("5 - 1 = %d
",nResult);
17     getchar();
18     return 0;
19 }

8. 编译运行Test, 查看相关信息.

控制台输出调试信息,下方的模快里只有Test.exe以及系统dll,静态库中所有代码都被打包加到Test.exe中去了,

与动态库相比静态库最明显区别就是不需要加载dll

技术图片

 

总结:

注意:当静态库代码进行修改后,Test项目也需要重新编译生成

小技巧:当需要使用多个库的时候,可以在解决方案目录下新建个library文件夹用于存放多个库的文件,整个项目组织结构更加清晰,方便引入库

以上是关于VC 静态库与动态库静态库创建与使用的主要内容,如果未能解决你的问题,请参考以下文章

[Linux 高并发服务器]制作静态库与动态库

opencv静态链接库有啥用

静态库与动态库

Linux动态库与静态库

Linux下静态库与动态库

请教关于linux中静态库与动态库的问题