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

How do I fix LNK2019 errors after adding libpng to a VS2019 C++ project through Nuget?

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

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

您可以从 nuget 包 <solution_folder>\packages\libpng.1.6.28.1\build\native\libpng.targets.

查看 targets 文件(自动导入 lib 的方法)

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

V140VC++2015 build toolV120VC++ 2013 build tool.

如果你的电脑已经安装了VS2015VS2013,你可以通过右键单击项目来更改VS0219的构建工具属性-->配置属性-->常规-->更改平台工具集 到 Visual Studio 2015(v140).

为了更好的解决方案

如果您的电脑只有 VS2019,并且为了更好的解决方法,

您应该安装 libpng-v142 nuget 包 而不是 它适用于 VS2019 VC++.