中关村在线

软件

VS2017 C++静态库图文教程

本文介绍使用Visual Studio 2017创建C++静态库的完整流程,内容涵盖项目配置、代码编写与编译生成等关键步骤,旨在助力开发与学习实践。

1、 推荐选用Win32控制台应用程序作为解决方案,具体界面所示。

2、 请选择Static Library类型,并取消勾选Precompiled Header选项,具体设置所示。

3、 添加头文件与源文件,具体所示。

4、 源文件.cpp同理,最终效果所示。

5、 在解决方案资源管理器中,右键项目选择属性,即可打开项目属性配置页面。

6、 输出目录所示。

7、 接下来便可开始编写代码。

8、 接下来,你需要创建一个项目用于测试(前文已提及,一个解决方案可包含多个项目,每个项目都是独立的可执行单元)。在解决方案资源管理器中,右键单击解决方案名称,选择添加→新建项目,然后根据需求选择合适的项目模板并完成配置。这样即可为当前解决方案添加一个新的可运行项目,便于后续功能验证与开发调试。操作界面所示。

9、 进入控制台,取消预编译头设置,操作方式与之前一致。此时,解决方案中已成功包含两个项目,具体结构所示。

10、 编写测试代码

11、 {

12、 }

13、 现在需为Test项目添加对MathLib的引用。这一操作的核心作用,是在使用Visual Studio调用cl编译器进行构建时,自动向链接阶段注入正确的库路径与依赖项。根据深入理解计算机系统(CSAPP)中的经典阐释:源文件通过include引入头文件,仅向编译器声明了函数或变量的接口,并未提供实际实现;真正的符号定义存在于库文件中——Windows平台对应.lib静态库,Linux平台则为.a文件。链接器必须在这些库中查找并解析所有未定义的符号,完成地址重定位,程序才能正确生成可执行文件。因此,准确识别并关联所需库至关重要。具体操作是在解决方案资源管理器中右键点击Test项目,选择添加引用,然后在弹出对话框中勾选MathLib。

14、 VS贴心地将解决方案中的项目列在备选项中,只需直接勾选即可,操作便捷直观。

15、 此时,Test项目的引用中已包含MathLib工程。

16、 接下来,需要为CL编译器配置头文件搜索路径,确保预处理阶段能准确定位并包含MathLib.h,从而完成相关符号的声明引入。具体操作是在项目属性页中依次展开C/C++→常规选项,在附加包含目录栏中添加自定义头文件所在路径。该设置用于指定除系统标准头文件目录外的其他查找位置,编译器将依此路径检索所需头文件。此处应填入MyStaticLibraryMathLib文件夹的完整路径(例如:$$(SolutionDir)MyStaticLibraryMathLib),确认后点击确定。完成配置后,CL在预处理时即可自动在该目录下查找并正确包含MathLib.h,为后续编译链接奠定基础。

17、 此时万事俱备,但F5运行时却出现如下错误提示:

18、 提示.lib不是有效的Win32应用程序,无法运行是正常的——因为静态库本身本就不可执行。问题在于:Visual Studio 需要明确知道整个解决方案中哪个项目应作为启动项来运行。虽然解决方案包含多个项目,但 VS 默认将最先添加的项目(此处为 MathLib)设为启动项目,并尝试运行其生成结果;而 MathLib 输出的是 .lib 文件,自然无法直接执行。要解决此问题,需手动指定真正可执行的项目作为启动项。具体操作为:在解决方案资源管理器中右键单击解决方案名称(如 MyStaticLibrary),选择属性,在打开的属性页中找到通用属性→启动项目,将启动项目设置为 Test(即生成 Test.exe 的项目)。这样,按下 F5 或点击开始执行时,VS 就会正确调用并运行 Test.exe,而非尝试执行静态库文件。

19、 单启动工程命名为Test,确认无误。

展开全文
人赞过该文 赞
内容纠错

相关电商优惠

评论

更多评论
还没有人评论~ 快来抢沙发吧~

读过此文的还读过

点击加载更多

内容相关产品

说点什么吧~ 0

发评论,赚金豆

收藏 0 分享
首页查报价问答论坛下载手机笔记本游戏硬件数码影音家用电器办公打印 更多

更多频道

频道导航
辅助工具