Visual Studio C++项目VC++库目录传递给链接器的方式及LIB变量获取
「VC++ 目录-库目录」的链接器传递机制
Visual Studio 2019的MSBuild C++项目体系中,VC++ Directories分类下配置的Library Directories不会直接作为/LIBPATH参数写入链接器命令行,而是会被预写入MSBuild执行上下文的LIB环境变量中。链接器运行时会默认读取当前进程的LIB环境变量作为额外的库搜索路径,因此你在Linker->Command Line页面看不到对应的显式参数。
获取MSBuild调用链接器时的LIB变量值的方法
可以通过两种常见方式获取对应时刻的LIB变量值做校验:
- 开启链接器进度输出:在项目属性的
Linker->General页面,将「显示进度」选项设置为/VERBOSE:LIB,重新生成项目后,生成输出日志会打印链接器搜索的所有库路径,包含LIB环境变量传入的全部路径 - 添加自定义MSBuild打印目标:在项目的
.vcxproj文件中插入如下自定义目标,会在链接器执行前打印当前的LIB变量值:
<Target Name="PrintLibBeforeLink" BeforeTargets="Link"> <Message Importance="High" Text="Link阶段LIB变量值:$(LIB)" /> </Target>
重新生成项目即可在生成输出窗口看到对应时刻的完整LIB变量内容。
自行找到全部答案的问题的留存价值
这类问题有明确的留存价值:
- 该问题覆盖了Visual Studio C++构建环节的非显性逻辑,是很多开发者排查链接错误时都会遇到的共性疑点,公开的问题和对应答案可以帮助其他遇到同类问题的开发者大幅节省排查时间
- 相关实现细节未在官方文档中做明确说明,公开的问题-答案对可以补充现有技术资料的空白,完善相关问题的检索结果
- 你可以直接整理自己排查得到的解决方案作为回答发布,形成完整的可参考内容。
内容的提问来源于stack exchange,提问作者adv12
相关产品推荐
相关产品推荐

