【问题标题】:How to link the OpenSSL library using Visual Studio 2019 and c++?如何使用 Visual Studio 2019 和 c++ 链接 OpenSSL 库?
【发布时间】:2021-10-15 12:28:31
【问题描述】:

我遵循了一个关于如何使用 Visual Studios 构建和链接 OpenSSL 的教程,但是在测试时我遇到了大量的链接器错误,这让我相信我在设置 OpenSSL 时可能做错了什么。

我遇到的一个错误(它们看起来都非常相似): LNK2001 未解析 extern Symbol "__imp_gethostbyname" - libcrypto.lib(libcrypto-lib-bio_addr.obj)

我总共收到 34 条此类错误消息(很抱歉,如果我的确切错误消息的翻译不是 100% 准确,因为我的 Visual Studio 不是英文的)。

所以我按照教程链接库的方式如下:

  1. 将包含目录路径添加到“设置->常规->附加包含目录”

  2. 将lib目录路径添加到“Linker->General->Additional Librarydirectorys”

  3. 将“libcrypto.lib”和“libssl.lib”添加到“链接器->输入->附加依赖项”

【问题讨论】:

  • 您需要链接到 Microsoft 库 Ws2_32.lib,如本 msdn 文档中所述:https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-gethostbyname
  • 你应该看看这个页面。 stackoverflow.com/questions/32156336/…
  • 为什么我需要链接该库(以及我将如何做到这一点 - 抱歉,因为我是使用 c++ 库的初学者,这对我来说并不明显)?我没有在任何实施 openssl 的指南中看到这一点。这个“__imp_gethostbyname”链接错误(如我的问题中所述)不是我唯一的链接错误。对我来说,它看起来更像是我忘记了 openssl 的配置和设置中的某些内容,仅仅是因为错误数量众多,而且还因为它在错误消息选项卡的“文件”列的每一行中都显示了“libcrypto.lib”。

标签: c++ visual-studio openssl


【解决方案1】:

DLL 提高了程序的可维护性,您可能需要了解动态链接库,请参考文档:Create and use your own Dynamic Link Library (C++)。您可以参考评论在您的项目中添加 OpenSSL。另外,根据您的路径,您似乎使用的是静态库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2021-02-10
    • 2021-11-06
    • 2021-01-20
    • 1970-01-01
    相关资源
    最近更新 更多