使用Visual Studio 2017加密++库链接错误

问题描述 投票:1回答:2

我正在尝试在我的项目中使用Crypto ++库(Windows应用程序)。使用它,包含,编译工作正常,但无法处理链接错误

以下是链接错误的一些示例,还有更多,但不要认为复制粘贴所有这些都是相关的

error LNK2019: unresolved external symbol "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl CryptoV2::encrypt(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?encrypt@CryptoV2@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V23@@Z) referenced in function "public: void __thiscall PStore::storeReversibleCrypt(wchar_t *,char *)" (?storeReversibleCrypt@PStore@@QAEXPA_WPAD@Z)
error LNK2001: unresolved external symbol "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl CryptoV2::hashPassword(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?hashPassword@CryptoV2@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V23@0@Z)

fatal error LNK1120: 4 unresolved externals

基本上,我将crypto ++的“Win32 \ Output \ Release”目录添加到我的链接器的附加库目录属性,以及我的C / C ++的General属性“Additional Include Directories”的主文件夹。

我已经尝试了很多想法,比如将库添加为新项目(相同的错误),将所有cpp文件添加到我的项目并使用它进行编译(不编译),仅添加我正在使用的.cpp文件(不现实,太多了),链接cryptopp610发布的所有不同文件夹(cryptdll,cryptlib,dll_output,输出,相同的错误),现在,我真的不知道我还能尝试什么。我makre也有很多搜索,尝试我看到的所有解决方案(不记得所有这些),仍然是同样的问题。我还尝试创建一个新项目来添加crypto ++而不需要长时间的编译或神秘的问题,但我也会遇到链接器错误。

有人有任何建议可以帮助我吗?无论如何,非常感谢,并原谅我的英语

编辑:需要在新的空白项目中添加,我得到63个未解析的外部符号,所以我想我忘了做一些基本的东西,但无法弄清楚哪个

c++ windows visual-studio-2017 linker-errors crypto++
2个回答
1
投票
error LNK2019: unresolved external symbol "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl CryptoV2::encrypt(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?encrypt@CryptoV2@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V23@@Z) referenced in function "public: void __thiscall PStore::storeReversibleCrypt(wchar_t *,char *)" (?storeReversibleCrypt@PStore@@QAEXPA_WPAD@Z)
error LNK2001: unresolved external symbol "public: static class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl CryptoV2::hashPassword(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?hashPassword@CryptoV2@@SA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V23@0@Z)

丢失的符号不是来自Crypto ++。 Crypto ++使用CryptoPP命名空间。缺少的符号来自CryptoV2命名空间或类。我猜这是另一个加密库。

您正确地将目录和库添加到链接器设置中。但是,您需要为CryptoV2库(除了Crypto ++库)执行此操作。

为了完整起见,看起来缺少这些:

std::string CryptoV2::encrypt(std::string);
std::string CryptoV2::hashPassword(std::string, std::string);

0
投票

可能是Ws2_32.lib链接器中缺少

© www.soinside.com 2019 - 2024. All rights reserved.