通过 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 适用于 v140
和 v120
构建工具。如果你的项目是VS2019创建的,VS默认使用v142
构建工具(for VS2019)
您可以从 nuget 包 <solution_folder>\packages\libpng.1.6.28.1\build\native\libpng.targets
.
查看 targets
文件(自动导入 lib 的方法)
所以这个文件找不到V140
和V120
,(你的VS2019用的是V142
)使条件为假,这样自动导入库永远失败。就是这个原因。
V140 是 VC++2015 build tool
而 V120 是 VC++ 2013 build tool
.
如果你的电脑已经安装了VS2015和VS2013,你可以通过右键单击项目来更改VS0219的构建工具属性-->配置属性-->常规-->更改平台工具集 到 Visual Studio 2015(v140).
为了更好的解决方案
如果您的电脑只有 VS2019,并且为了更好的解决方法,
您应该安装 libpng-v142 nuget 包 而不是 它适用于 VS2019 VC++.
我正在创建一个需要使用 libpng 的解决方案。我通过 Visual Studio 2019 的 Nuget 包管理器安装了这个库及其依赖项,包括
自动 nuget 无法将 lib 依赖项添加到 Linker 的问题是 c++ nuget 适用于 v140
和 v120
构建工具。如果你的项目是VS2019创建的,VS默认使用v142
构建工具(for VS2019)
您可以从 nuget 包 <solution_folder>\packages\libpng.1.6.28.1\build\native\libpng.targets
.
targets
文件(自动导入 lib 的方法)
所以这个文件找不到V140
和V120
,(你的VS2019用的是V142
)使条件为假,这样自动导入库永远失败。就是这个原因。
V140 是 VC++2015 build tool
而 V120 是 VC++ 2013 build tool
.
如果你的电脑已经安装了VS2015和VS2013,你可以通过右键单击项目来更改VS0219的构建工具属性-->配置属性-->常规-->更改平台工具集 到 Visual Studio 2015(v140).
为了更好的解决方案
如果您的电脑只有 VS2019,并且为了更好的解决方法,
您应该安装 libpng-v142 nuget 包 而不是 它适用于 VS2019 VC++.