Visual Studio 2013和libpng

3

我正在尝试使用VS2013和libpng在C语言中编写一个简单的PNG文件。我从Nuget安装了libpng并包含了png.h头文件,但是我无法编译。我的输出如下:

1>main.obj : error LNK2019: unresolved external symbol png_create_write_struct referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_set_longjmp_fn referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_create_info_struct referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_write_info referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_destroy_write_struct referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_init_io referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_free_data referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_set_IHDR referenced in function writeImage
1>main.obj : error LNK2019: unresolved external symbol png_set_text referenced in function writeImage

我尝试过调整编译设置,但似乎没有任何作用。当我编写代码时,在这些声明下面没有出现任何红色线条,因此VS应该能看到一些代码。


VS正在查找头文件。在链接步骤中,你需要有类似于"-L库路径 -l库名称"的内容。 - user3629249
1个回答

1
除了包含png.h,您还必须链接适当的导入库(可能称为libpng.lib或类似名称)。在Visual Studio中,您需要将其添加到项目设置 → 链接器 → 输入 → 附加依赖项中。

实际上,在这种情况下,问题并不是缺少库的问题 - NuGet的想法就是(就像Linux下的pkg-config一样)自动包含要链接的库。在这种情况下,最有可能的问题是NuGet软件包需要更新为新的工具集版本(因此它不提供任何库文件名,因为它不识别当前的工具集)。当使用比软件包更新的Visual Studio版本时,似乎会发生这种情况。我在上述重复问题中发布了一个答案,其中详细说明了如何做到这一点。 - Malvineous

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接