我想测试snappy library,但是在编译我的项目时,我有两个错误:
1>main.obj:错误LNK2019:未解析的外部符号“bool__cdecl snappy::uncompress(char const*,unsigned int,class std::basic_string,class std::allocator>*)”(?uncompress@snappy@@ya_npbdipav?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std@@@z)在函数_main中引用
1>main.obj:错误LNK2019:未解析的外部符号“unsigned int__cdecl snappy::compress(char const*,unsigned int,class std::basic_string,class std::allocator>*)”(?compress@snappy@@yaipbdipav?$basic_string@du?$char_traits@d@std@@v?$allocator@d@2@@std@@@z)在函数_main中引用
致命错误LNK1120:2个未解决的外部
#pragma comment(lib,"snappy32.lib")
#include <snappy.h>
#include <snappy-c.h>
#include <snappy-sinksource.h>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
string buffer = "0=EURCHF|1=1.21541|2=1.21547|5=20140318T075959.728388|15=1.21547|16=1.21551|17=1.21553|18=1.21555|19=1.21556|20=1.21559|21=1.21576|22=1.21584|115=1000000|116=2000000|117=3500000|118=3000000|119=5000000|120=9000000|121=1000000|122=2000000|315=1.21541|316=1.21537|317=1.21535|318=1.21533|319=1.21532|320=1.21531|321=1.21529|322=1.21518|323=1.2151|324=1.21489|415=500000|416=1000000|417=1000000|418=5000000|419=5000000|420=2000000|421=9000000|422=500000|423=2000000|424=7000000|720=500000|721=1000000";
string output;
size_t compressedSize = snappy::Compress(buffer.data(),buffer.size(),&output);
printf("%s",output.c_str());
string uncompressedBuffer;
bool result = snappy::Uncompress(output.data(),output.size(),&uncompressedBuffer);
printf("%s\n",uncompressedBuffer.c_str());
return 0;
}
我在我的项目属性中添加了带有lib和snappy32.lib的目录。
我也遇到过同样的问题。默认情况下,snappy似乎没有正确地构建为静态库。
我的解决方案是:开放msvc项目(在https://cdn.machinezoo.com/download/snappy/snappy-windows-1.1.1.8.7z上找到);在“属性”中,设置:项目默认值->;配置类型->;静态库(。lib)。
用您的应用程序的正确配置编译此项目;然后应用程序正确链接编译后的。lib,您可以调用缺少的方法。希望这有用!