سؤال

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

هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

EVP_.... are define in OpenSSL. So you have to link with OpenSSL statically or dynamically.

You are missing the dll containing the EVP_CipherInit function in your library path.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top