OpenSSL - LNK 2019

时间:2013-09-08 23:21:51

标签: c++ openssl

当我尝试在OpenSSL库中链接我正在处理的项目时,我得到了LNK 2019。我编译了OpenSSL库并运行测试,所有这些都通过了。我玩openssl.exe并让它正确创建和MD5哈希。当我尝试使用API​​提供的功能时,它只是无法识别它们。我甚至在.lib文件上使用了dumpbin -headers来确保我使用的文件包含了我正在使用的函数的正确引用。

我确保包含正确的文件和路径(我还包括此处没有图示的标题)。

enter image description here

以下是实际文件及其路径

enter image description here

这是实际的错误。

enter image description here

  

错误LNK2019:函数_main中引用的未解析的外部符号_EVP_MD_CTX_create   错误LNK2019:函数_main中引用了未解析的外部符号_EVP_DigestInit_ex   错误LNK2019:未解析的外部符号_OpenSSL_add_all_digests   在函数_main错误中引用LNK2019:未解析的外部符号   _EVP_get_digestbyname在函数_main错误中引用LNK1120:4个未解析的外部

我该如何解决这个问题?我把文件放在正确的位置还是忘记了包含?我已经花了几天时间试图解决这个问题,这是我的最后一招:/

我正在使用Microsoft Visual Studio 2012

2 个答案:

答案 0 :(得分:0)

这可能是调用约定的问题。

请检查有关呼叫约定的项目设置。

OpenSSL使用/ Gd选项编译,这意味着函数将是__cdecl调用约定。

您可以将您的调用约定更改为/ Gd,也可以使用__cdecl前缀的OpenSSL函数签名前缀。

我相信这可能会有所帮助。这个link解释了如何更改调用约定。

请确认这是否对您有所帮助。

答案 1 :(得分:0)

当我应该使用x64进行构建时,我正在为x86构建。由于x64选项没有显示在菜单中,我认为它不可用。我意识到我必须在项目属性下添加它,现在一切正常。

感谢您的帮助。

相关问题