使用Visual Studio 2017加密++库链接错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Visual Studio 2017加密++库链接错误相关的知识,希望对你有一定的参考价值。
我正在尝试在我的项目中使用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个未解析的外部符号,所以我想我忘了做一些基本的东西,但无法弄清楚哪个
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);
可能是Ws2_32.lib链接器中缺少
以上是关于使用Visual Studio 2017加密++库链接错误的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Visual Studio 2017 中使用 Qt 库?
如何在 Visual Studio 2017 项目中使用 modbus 库?
C++17 标准库包括不使用 Visual Studio 2017 中的 Android 项目