如何使用 Visual Studio 2019 和 c++ 链接 OpenSSL 库?

Posted

技术标签:

【中文标题】如何使用 Visual Studio 2019 和 c++ 链接 OpenSSL 库?【英文标题】:How to link the OpenSSL library using Visual Studio 2019 and c++? 【发布时间】: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 不是英文的)。

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

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

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

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

【问题讨论】:

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

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

【讨论】:

以上是关于如何使用 Visual Studio 2019 和 c++ 链接 OpenSSL 库?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2019 中使用 CppFlow 库?

如何使用 Visual Studio 2019 构建最兼容的二进制文件?

如何使用 Visual Studio 2019 进行 .NET Core 远程开发

如何在 Visual Studio 2019 中使用 Xamarin Forms(UWP) 和 C# 创建 Web 应用程序

如何在 Visual Studio 2019 中使用 C#10

如何使用 Visual Studio 2019 构建 GTK+ 应用程序?