当我尝试在OpenSSL库中链接我正在处理的项目时,我得到了LNK 2019。我编译了OpenSSL库并运行测试,所有这些都通过了。我玩openssl.exe并让它正确创建和MD5哈希。当我尝试使用API提供的功能时,它只是无法识别它们。我甚至在.lib文件上使用了dumpbin -headers来确保我使用的文件包含了我正在使用的函数的正确引用。
我确保包含正确的文件和路径(我还包括此处没有图示的标题)。
以下是实际文件及其路径
这是实际的错误。
错误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
答案 0 :(得分:0)
这可能是调用约定的问题。
请检查有关呼叫约定的项目设置。
OpenSSL使用/ Gd选项编译,这意味着函数将是__cdecl调用约定。
您可以将您的调用约定更改为/ Gd,也可以使用__cdecl前缀的OpenSSL函数签名前缀。
我相信这可能会有所帮助。这个link解释了如何更改调用约定。
请确认这是否对您有所帮助。
答案 1 :(得分:0)
当我应该使用x64进行构建时,我正在为x86构建。由于x64选项没有显示在菜单中,我认为它不可用。我意识到我必须在项目属性下添加它,现在一切正常。
感谢您的帮助。