第三方编译错误 API - Visual Studio

Compile error in third party API - Visual Studio

我尝试使用一些散列 APIs 但它给出了编译错误。我尝试了 2 个不同的散列 APIs 和 2 个不同的 IDE 和编译器,但它给出了相同的错误。它看起来像一个链接器错误。通常会出现“unresolved external externals”或“undefined to”编译错误。我该如何修复编译错误?

test.cpp:

#include <iostream>
#include <string>
#include "xxHash-0.7.4/xxhash.h"

int main()
{
    const char test[] = "srgsdf";
    XXH64_hash_t seed = 545244;

    XXH64_hash_t test_xxhash = XXH64(test, strlen(test), seed);

    std::cout << test_xxhash;

    return 0;
}

错误列表:

LNK1120 -   unresolved externals    
LNK2019 -   unresolved external symbol _XXH64 referenced in function _main

XXHash64 Visual Studio 2019 - 16.6.2: XXHash64 on Visual Studio

XXHash64 API Code::Blocks - 20.03: XXHash64 API on Code::Blocks

Hash Library on Visual Studio 2019 - 16.6.2: Hash Library on Visual Studio

Hash Library on Code::Blocks - 20.03: Hash Library on Code::Blocks

一个可能的原因是您的项目在要编译的源文件列表中缺少 xxhash.c。每个 *.c 文件成为一个目标文件,在最后阶段被 linked。因此,如果没有它,就不会创建 xxhash.c 中定义的符号。

解决此问题的另一种方法是在 #include "xxhash.h" 之前 #define XXH_INLINE_ALL。这将 内联 代码,就像它存在于本地源文件中一样,因此,它不需要 link 到另一个目标文件。内联也有利于小数据的性能,但会增加二进制大小。