如何在Visual Studio中读取未解决的外部符号错误?

时间:2013-07-27 11:49:15

标签: c++ visual-studio unresolved-external

如何从Visual Studio中读取此错误消息?关于究竟缺少什么的任何线索?这是一个复杂的项目,猜测是一种相当无效的方法 - 我更愿意确切知道要寻​​找什么。

  

1> ------ Build build:Project:Crypto,配置:debug_shared   x64 ------

     

1>创建库.. \ lib64 \ PocoCryptod.lib和对象   .. \ lib64 \ PocoCryptod.exp 1> CipherImpl.obj:错误LNK2019:未解决   函数中引用的外部符号EVP_CIPHER_CTX_block_size   “public:virtual unsigned __int64 __cdecl Poco :: Crypto ::`anonymous   namespace':: CryptoTransformImpl :: blockSize(void)const“   (?BLOCKSIZE @ CryptoTransformImpl @?A0xbc3e4780 @加密@ @@波索UEBA_KXZ)

     

1&gt; CipherImpl.obj:错误LNK2019:未解析的外部符号   EVP_CipherInit在函数“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::匿名命名空间':: CryptoTransformImpl :: transform(unsigned char const   *,__ int64,unsigned char *,__ int64)“(?transform @ CryptoTransformImpl @?A0xbc3e4780 @ Crypto @Poco @@ UEAA_JPEBE_JPEAE1 @ Z)

这里有完整的错误列表 https://gist.github.com/anonymous/91a76564651be4ac43fc

3 个答案:

答案 0 :(得分:3)

您将其视为

  

错误LNK2019:未解析的外部符号EVP_CIPHER_CTX_block_size

无法找到符号EVP_CIPHER_CTX_block_size

  

在函数“public:virtual unsigned __int64 __cdecl Poco :: Crypto ::`anonymous namespace':: CryptoTransformImpl :: blockSize(void)const”中引用(?blockSize @ CryptoTransformImpl @?A0xbc3e4780 @ Crypto @Poco @@ UEBA_KXZ)

您正试图在CryptoTransformImpl::blockSize(void)const中使用它(它位于Poco::Crypto内的匿名命名空间内。

这可能意味着you didn't link against the library that exports that symbol

答案 1 :(得分:1)

EVP _....在OpenSSL中定义。 因此,您必须静态或动态地与OpenSSL链接。

答案 2 :(得分:0)

您缺少包含库路径中EVP_CipherInit功能的dll。