Reputation: 16630
How do I read this error message from Visual Studio? Any clues as to what exactly is missing? This is a complex project and guessing is a rather ineffective approach - I'd prefer to know exactly what to look for.
1>------ Build started: Project: Crypto, Configuration: debug_shared x64 ------
1> Creating library ..\lib64\PocoCryptod.lib and object ..\lib64\PocoCryptod.exp 1>CipherImpl.obj : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_block_size referenced in function "public: virtual unsigned __int64 __cdecl Poco::Crypto::`anonymous namespace'::CryptoTransformImpl::blockSize(void)const " (?blockSize@CryptoTransformImpl@?A0xbc3e4780@Crypto@Poco@@UEBA_KXZ)
1>CipherImpl.obj : error LNK2019: unresolved external symbol EVP_CipherInit referenced in function "public: __cdecl Poco::Crypto::
anonymous namespace'::CryptoTransformImpl::CryptoTransformImpl(struct evp_cipher_st const *,class std::vector<unsigned char,class std::allocator<unsigned char> > const &,class std::vector<unsigned char,class std::allocator<unsigned char> > const &,enum Poco::Crypto::A0xbc3e4780::CryptoTransformImpl::Direction)" (??0CryptoTransformImpl@?A0xbc3e4780@Crypto@Poco@@QEAA@PEBUevp_cipher_st@@AEBV?$vector@EV?$allocator@E@std@@@std@@1W4Direction@0123@@Z) 1>CipherImpl.obj : error LNK2019: unresolved external symbol EVP_CipherUpdate referenced in function "public: virtual __int64 __cdecl Poco::Crypto::
anonymous namespace'::CryptoTransformImpl::transform(unsigned char const *,__int64,unsigned char *,__int64)" (?transform@CryptoTransformImpl@?A0xbc3e4780@Crypto@Poco@@UEAA_JPEBE_JPEAE1@Z)
Full error list here https://gist.github.com/anonymous/91a76564651be4ac43fc
Upvotes: 2
Views: 4990
Reputation: 258608
You read it as
error LNK2019: unresolved external symbol EVP_CIPHER_CTX_block_size
The symbol EVP_CIPHER_CTX_block_size
cannot be found.
referenced in function "public: virtual unsigned __int64 __cdecl Poco::Crypto::`anonymous namespace'::CryptoTransformImpl::blockSize(void)const " (?blockSize@CryptoTransformImpl@?A0xbc3e4780@Crypto@Poco@@UEBA_KXZ)
You are attempting to use it in CryptoTransformImpl::blockSize(void)const
(which is inside an anonymous namespace inside Poco::Crypto
.
This can mean you didn't link against the library that exports that symbol.
Upvotes: 3
Reputation: 8469
EVP_.... are define in OpenSSL. So you have to link with OpenSSL statically or dynamically.
Upvotes: 1
Reputation: 61437
You are missing the dll containing the EVP_CipherInit
function in your library path.
Upvotes: 0