如何使用 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 应用程序