第三方编译错误 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 到另一个目标文件。内联也有利于小数据的性能,但会增加二进制大小。
我尝试使用一些散列 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 到另一个目标文件。内联也有利于小数据的性能,但会增加二进制大小。