在通过 Nuget 将 libpng 添加到 VS2019 C++ 项目后,如何修复 LNK2019 错误?

问题描述

我正在创建一个需要使用 libpng 的解决方案。我通过 Visual Studio 2019 的 Nuget 包管理器安装了这个库及其依赖项,包括 和使用库中的函数和宏不会导致错误。但是,如果我尝试构建解决方案,每次对库函数或变量的引用都会出现一个 LNK2019 错误。在我看来,NuGet 未能将库位置添加链接属性。我找到了 .lib 文件所在的位置,但我不知道要调整哪些设置以便 Studio 在 NuGet 目录中查找和找到这些文件

解决方法

自动 nuget 无法将 lib 依赖项添加到 Linker 的问题是 c++ nuget 用于 v140v120 构建工具。如果您的项目是由 VS2019 创建的,VS 默认使用 v142 构建工具(用于 VS2019)。

您可以检查 nuget 包 targets 中的 <solution_folder>\packages\libpng.1.6.28.1\build\native\libpng.targets 文件(自动导入 lib 的方法)。

enter image description here

enter image description here

所以这个文件找不到V140V120,(你的VS2019使用V142)使条件为假,这样自动导入lib永远失败.这就是原因。

V140VC++2015 build toolV120VC++ 2013 build tool

如果您的PC已经安装了VS2015VS2013,您可以通过右键单击项目属性来更改VS0219的构建工具-- >配置属性-->常规--> 将 Platfrom 工具集 更改为 Visual Studio 2015(v140)。

enter image description here

为了更好的解决方案

如果您的 PC 只有 VS2019 并且还有更好的解决方法,

您应该安装 libpng-v142 nuget 包,它适用于 VS2019 VC++