第三方 API 中的编译错误 - Visual Studio

Compile error in third party API - Visual Studio

本文关键字:Visual Studio 错误 编译 API 第三方      更新时间:2023-10-16

我尝试使用一些哈希API,但它给出了编译错误。我尝试了 2 个不同的哈希 API 和 2 个不同的 IDE 和编译器,但它给出了相同的错误。它看起来像一个链接器错误。通常存在"未解析的外部外部"或"未定义到"编译错误。如何修复编译错误?

测试.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

Visual Studio 2019 上的 XXHash64 - 16.6.2: XXHash64 on Visual Studio

XXHash64 代码上的 API::块 - 20.03: XXHash64 代码上的 API::块

Visual Studio 2019 上的哈希库 - 16.6.2:Visual Studio 上的哈希库

代码上的哈希库::块 - 20.03: 代码上的哈希库::块

一个可能的原因是您的项目在其要编译的源文件中缺少xxhash.c。每个*.c文件都将成为目标文件,在最后阶段进行链接。因此,没有它,就不会创建xxhash.c中定义的符号。

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