本文介绍了Windows环境下使用Visual Studio 2022如何创建和使用静态库和动态库。


一些概念

常用宏

含义 示例
$(SolutionDir) | 当前解决方案(.sln 文件)所在的目录路径 | $(SolutionDir)external\include
$(ProjectDir) | 当前项目文件(.vcxproj)所在目录 | $(ProjectDir)libs\
$(Configuration) | 当前配置名称(Debug/Release) | $(SolutionDir)output\$(Configuration)\
$(Platform) | 当前平台名称(Win32/x64) | lib\$(Platform)\

在 VS 属性页中,这些宏会被自动展开显示实际路径,可以在项目属性的任意路径框中点击下拉箭头 -> 编辑 -> 点击"宏>>"按钮查看所有可用宏

$(SolutionDir) 是 VS 的预定义宏,表示:

  • 当前解决方案(.sln 文件)所在的目录路径;

  • 自动包含结尾的反斜杠\

例如:如果解决方案在 C:\Projects\MyApp\,则 $(SolutionDir) 展开就是 C:\Projects\MyApp\

完整路径 $(SolutionDir)external\include 表示:

在解决方案目录下寻找 external 子文件夹,然后在其中寻找 include 子文件夹,示例展开结果:C:\Projects\MyApp\external\include\

项目属性选项

C/C++ > 常规 > 附加包含目录

  • 作用:指定编译器在编译阶段查找头文件(.h/.hpp)的额外目录路径
  • 使用场景:当你的项目使用第三方库的头文件时,如果这些头文件不在项目目录或默认包含路径中
  • 示例:D:\libraries\boost\include;$(SolutionDir)external\include

链接器 > 常规 > 附加库目录

  • 作用:指定编译器在链接阶段查找库文件(.lib)的额外目录路径
  • 使用场景:当你的项目依赖第三方库时,如果这些库不在默认搜索路径中,就需要在这里添加它们的存放路径
  • 示例:D:\libraries\boost\lib

链接器 > 输入 > 附加依赖项

  • 作用:明确指定项目链接时需要使用的库文件名(.lib)
  • 使用场景:列出所有需要链接的库文件,包括第三方库和系统库
  • 示例:opengl32.lib;glfw3.lib;assimp.lib

它们之间的关系

  • 编译阶段:附加包含目录帮助编译器找到头文件
  • 链接阶段:附加库目录帮助链接器找到库文件位置,附加依赖项告诉链接器具体要链接哪些库

最佳实践建议

  1. 使用相对路径(如$(SolutionDir))而非绝对路径,方便项目迁移
  2. 对于大型项目,考虑使用属性表(.props)来统一管理这些设置
  3. 调试时如果出现"未找到头文件"错误,检查附加包含目录;出现"无法解析的外部符号"错误,检查附加库目录和附加依赖项

为什么这样写是好习惯

  1. 跨机器兼容性:无论项目被复制到什么位置都能正确找到路径
  2. 团队协作友好:不同开发者可以有不同的本地路径,但都能正确编译
  3. 清晰的项目结构:明确将第三方库放在 external 目录是常见做法

静态库

待续...

使用 Visual Studio 2022 创建动态库和静态库的更多相关文章

  1. [翻译]正式宣布 Visual Studio 2022

    原文: [Visual Studio 2022] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意见,或 ...

  2. .NET6系列:微软正式宣布Visual Studio 2022

    系列目录     [已更新最新开发文章,点击查看详细] 首先,我们要感谢正在阅读这篇文章的你,我们所有的产品开发都始于你也止于你,无论你是在开发者社区上发帖,还是填写了调查问卷,还是向我们发送了反馈意 ...

  3. .NET6系列:Visual Studio 2022 线路图

    系列目录     [已更新最新开发文章,点击查看详细] 在上一篇博客<Visual Studio 2022>中介绍了VS2022的性能改进与重要功能.本文主要介绍在 Visual Stud ...

  4. 使用Visual Studio 2022开发前端

    前端开发环境多数基于Node.js,好处不多说了.但与使用Visual Studio开发的后端Asp.Net Core项目一起调试,却不是很方便,所以试着在Visual Studio 2022中开发前 ...

  5. Visual Studio 2022 Community 不完全攻略

    0. 前言 建议结合视频阅读哦 Visual Studio 2022 Community 不完全攻略 有问题或者意见欢迎评论 ! 1. 下载&安装 Visual Studio Communit ...

  6. 使用Visual Studio 2010 创建简单的Silverlight应用程序

    使用Visual Studio 2010 创建简单的Silverlight应用程序 Silverlight是创建动态的引人的RIAs(Rich Internet Application)的新方法.这里 ...

  7. 它来了!!!有史以来第一个64位Visual Studio(2022)预览版将在今夏发布!

    美国时间2021年4月19日,微软产品研发部一位负责人Amanda Silver在其博客上发布一则<Visual Studio 2022>的消息,表示将在今年(2021年)夏天发布Visu ...

  8. Visual Studio 2022 预览版3 最新功能解说

    我们很高兴地宣布Visual Studio 2022 的第三个预览版问世啦!预览版3 提供了更多关于个人和团队生产力.现代开发和持续创新等主题的新功能.在本文中,我们将重点介绍Visual Studi ...

  9. 微软发布了Visual Studio 2022 RC版,并将在11月8日发布正式版

    微软今天发布了Visual Studio 2022 最接近正式发布的RC版本,同时宣布在11月8日发布正式版,届时将在线上发布虚拟的发布活动,具体参见:https://devblogs.microso ...

  10. 地表最强IDE ——Visual Studio 2022正式发布

    地表最强IDE--Visual Studio 2022昨天正式发布啦! 堪称宇宙第一IDE工具集的Visual Studio,在经过不断更新优化之后,新版本就要与大家见面了.本次新版本发布,有许多令人 ...

随机推荐

  1. 我们开源的AI产品pandawiki 火了……

    大家好,经过一个月的内测,我们刚刚开源了一款 AI 驱动的 Wiki 项目,叫做 PandaWiki. GitHub 链接:https://github.com/chaitin/PandaWiki 项 ...

  2. pdfjs-dist v3.x渲染pdf

    import './App.css' import * as pdfjsLib from "pdfjs-dist"; import { useEffect, useRef, use ...

  3. 前端开发系列111-工程化篇之Yeoman脚手架工具使用入门

    Yeoman是一款流行的前端的脚手架工具. 脚手架工具可以用来快速的自动生成项目的必要文件和基础文件结构.Yeoman使用的内建命令为yo,同时它自己也是一个包管理工具和自动化任务工具,它基于特定的模 ...

  4. opengl 学习之 14

    opengl 学习 之 14 lesson 简介 生成一个纹理??其实看到这里有点看不懂了.哭 link http://www.opengl-tutorial.org/uncategorized/20 ...

  5. 使用Gradio快速搭建一个网站

    使用Gradio快速搭建一个网站. 提到使用gr.Interface创建UI界面,定义输入输出类型,然后通过demo.launch()启动.这应该是最基础的方法.中的示例代码也展示了类似的步骤,安装G ...

  6. SQL Server 2016安装指南——针对“Microsoft R Open和Microsoft R Serve”提供解决经验 -九五小庞

  7. 2023年10月最新全国省市区县和乡镇街道行政区划矢量边界坐标经纬度地图数据 shp geojson json

    发现个可以免费下载全国 geojson 数据的网站,推荐一下.支持全国.省级.市级.区/县级.街道/乡镇级以及各级的联动数据,支持导入矢量地图渲染框架中使用,例如:D3.Echarts等 geojso ...

  8. CF405E Graph Cutting 解题报告

    CF405E Graph Cutting 解题报告 1 题目链接 https://codeforces.com/problemset/problem/405/E 2 题目整理 题目 : 图形切割 题目 ...

  9. 如何在FastAPI中玩转Schema版本管理和灰度发布?

    扫描二维码关注或者微信搜一搜:编程智域 前端至全栈交流与成长 发现1000+提升效率与开发的AI工具和实用程序:https://tools.cmdragon.cn/ Schema版本管理实战 基础概念 ...

  10. Kafka 不难,只是你用得不对

    本文分享使用 Kafka 的一些经典模式.有时你感觉 Kafka 好难搞,可能是因为不了解这些模式. 让我们从基础开始: 1.每个事件类型一个主题 反模式: orders-service-topic ...