使用 libpng 时未解决的外部问题

Unresolved externals when using libpng

这里是VS新手!

我正在使用 libpng library, which I installed via NuGet in VS 2019, for a C++ project. I have a function loadPng in renderer.h that reads a png along the lines of the manualpng.h 包括在内。代码本身没有错误。错误信息是:

LNK2019 reference to an unresolved external symbole "png_set_sig_bytes" in function ""int __cdecl loadPng(char const *,struct img_format *)" (?loadPng@@YAHPEBDPEAUimg_format@@@Z)"

对于库中的所有函数。

我该如何解决这个问题或者我搞砸了什么? (我想我没有正确设置库..)

如果您需要了解任何具体信息,请询问。

函数:

static int loadPng(const char *filename, img_format *target) {
    FILE* fp;
    fopen_s(&fp, filename, "rb");
    if (!fp) return (ERROR);
    void* tempBuffer[8] = { 0, 0, 0, 0, 0, 0, 0, 0};
    fread(tempBuffer, 1, 8, fp);

    if (png_sig_cmp((png_const_bytep)tempBuffer, 0, 8)) return (ERROR);
.
.
.
    return 0;
}

在 MSVC 中,主要有两种类型的错误,

  1. C 开头的错误,表明这是一个编译器错误。
  2. LNK 开头的错误表明这是一个链接错误。

通常,当链接器找不到库或目标文件时,会发生 LNK2019 之类的错误。所以这意味着您没有将库包含到您的链接器中。

为此,请转到项目 Properties -> Linker -> Input -> Additional Dependencies 并将库文件添加到其中。并且还转到 Linker 选项卡中的 General 并在 Additional Library Directories 中添加库文件的路径(例如:“C:\Libs”)。
您可以选择将完整文件路径(例如:“C:\Libs\library.lib”)添加到 Linker 选项卡中的 Additional Dependencies