图解Visual Studio2017编写C++静态库

2025-06-25 02:47:08

1、解决方案选win32 Console Application控制台,如下图所示:

图解Visual Studio2017编写C++静态库

2、类型选Static Library静态库,去掉Precompiled Header预编译头选项,如下图所示:

图解Visual Studio2017编写C++静态库

3、添加头文件和源文件,如下图所示:

图解Visual Studio2017编写C++静态库

4、源文件.cpp同理,之后应该是这个样子,如下图所示:

图解Visual Studio2017编写C++静态库

5、Solution Explorer->Properties属性页,如下图所示:

图解Visual Studio2017编写C++静态库

6、Output Direction输出目录,如下图所示:

图解Visual Studio2017编写C++静态库

7、然后就可以写代码了。// MathLib.h#pragma onceint add(int x, int y);// MathLib.cpp#include "MathLib.h"int add(int x, int y) { return x + y; }

8、然后你需要一个Project来测试(回想开头说的,一个Solution可以有多个Project,它们都是执行单位(一会会再讲到怎么叫执行单位这是我自己造的概念)),在Solution Explorer里面为Solution加入新工程,如下图所示:

图解Visual Studio2017编写C++静态库

9、选控制台,把预编译头去掉和之前一样,现在我们得到了一个含有俩Projects的Solution了,如下图所示:

图解Visual Studio2017编写C++静态库

10、编写一段测试代码。// Test.cpp#include "stdafx.h"垆杪屑丝#include "..\MathLib\MathLib.h"#include <iostream>int main(){ std::cout << add(1, 2) << std::endl; return 0;}

11、现在需要为Test添加MathLib的引用,这一步实际的作用是,在引导IDE用cl编译器命令行编译的时候,加入正确的链接选项(CSAPP有非常inspiring的讲解,源文件#i荏鱿胫协nclude了头文件以后只是为链接器介绍了一堆未重定位的符号,它需要在库文件(静态库的话Linux是.a文件Windows是.lib)里找这些符号完成重定位),找到这些库很重要。在Solution Explorer里面Add Reference,如下图所示:

图解Visual Studio2017编写C++静态库

12、VS很贴心地把Solution里的Projects列进了备选项,选中即可,如下图所示:

图解Visual Studio2017编写C++静态库

13、此时Test的Reference里就有MathLib工程了。下一步,为cl胆咣骜岱编译器添加include路径,也就是说,预编译期应该怎么找MathLib.h以完成符号的引入。在Test Properties属性页->C++->General->Additional Include Directaries附加包含路径,就是额外于标准库头文件目录的其他(自定义)头文件包含的目录,cl要去这些地方找MathLib.h。选择添加MyStaticLibrary\MathLib这个目录OK,如下图所示:

图解Visual Studio2017编写C++静态库

14、这个时候万事俱备,F5组建运行结果报了这么个错,如下图所示:

图解Visual Studio2017编写C++静态库

15、说.lib不是有效的win32应用不能运行。对呀我本来也没要运行它呀,可是VS怎么知道Solution里面这么多Projects应该运行哪一个?(想想之前的执行单元理解到是什么意思了吧,每个Project编译的结果都认为可执行)第一个添加的Project是MathLib所以VS默认去运行它的输出所以错了。想办法引导VS去运行Test的输出(Test.exe),Solution Explorer->MyStaticLibrary Properties属性页,如下图所示:设单启动工程为Test,OK。

图解Visual Studio2017编写C++静态库
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢