gpt4 book ai didi

winapi - 在 Windows 上构建支持 SSL 的 libcurl

转载 作者:太空宇宙 更新时间:2023-11-03 12:37:24 25 4
gpt4 key购买 nike

我在 Win32 C++ 应用程序中使用 libcurl。

我将 curllib.vcproj 项目添加到我的解决方案中,并将我的其他项目设置为依赖它。

如何在启用 SSL 支持的情况下构建它?

最佳答案

好吧,由于这篇文章严重失败,我不得不自己深入研究这个问题。

另请查看其他答案和评论,了解有关其他版本等的其他信息。

编辑:自从我发布了这个问题后,curl 主页上似乎提供了现成的二进制文件。查看James' answer .

所以这里是:

-

预处理器

需要将以下两个符号提供给预处理器才能为 libcurl 启用 SSL:

USE_SSLEAY
USE_OPENSSL

(libcurl 使用 OpenSSL 支持 SSL)

或者,这些符号可以直接添加到 libcurl 中名为 setup.h 的文件中,但我不太乐意在 3rd 方分发中修改代码,除非我真的必须这样做。

重建 libcurl 库,我现在收到一些关于未找到 OpenSSL 包含文件的错误。当然,因为我还没有正确设置 OpenSSL 发行版。

编译 OpenSSL 二进制文件

我下载了 OpenSSL 0.9.8 源代码分发版并解压了它。

在源代码分发的根目录中有一个名为 INSTALL.W32 的文件,它描述了如何编译 OpenSSL 二进制文件。构建链需要 perl,所以我安装了最新版本的 ActivePerl。

我在构建时遇到了一些问题,这可能并不适用于所有系统,但我会在这里解决它以防有人遇到同样的情况。

根据 INSTALL.W32:

在当前目录设置为源代码分发根目录的情况下运行以下命令行任务:

1> perl Configure VC-WIN32 --prefix=c:/some/openssl/dir

(其中“c:/some/openssl/dir”应替换为应安装 OpenSSL 的目录。不要在此路径中使用空格。在这种情况下,前面的编译将失败)

2> ms\do_ms

对我来说,这一步一开始是不成功的,因为我缺少环境变量 OSVERSION 和 TARGETCPU。我分别将它们设置为 5.1.2600x86。您可能会提示 OSVERSION 是“疯狂的”,但仔细观察,这个错误是针对 WinCE 的,不会影响 Win32 设置。要了解您的操作系统版本,请从命令提示符运行“ver”命令或运行 winver.exe。

3> nmake -f ms\nt.mak (for static library)

3> nmake -f ms\ntdll.mak (for DLL)

源代码现在编译。在我的笔记本电脑上花费了大约 5 分钟。

编译完成后,库或二进制文件已放置在:

distroot/out32 - 用于静态库构建

distroot/out32dll - 用于 DLL 构建

构建和链接

现在,回到 visual studio 并指出库并包含 header 的路径。包含文件位于 distroot/inc32/openssl

记得添加 libeay32.libssleay32.lib 作为链接器输入。

重建 libcurl 项目。

错误!

至少对我来说,这个版本的 OpenSSL 是这样。它提示其中一个 OpenSSL header 中的 struct typedef。我找不到这方面的任何信息。经过一个小时的谷歌搜索后,我打破了自己的原则并从 OpenSSL header 中注释掉了 typedef,幸运的是 libcurl 没有使用该符号,所以它构建得很好。

更新:正如 Jason 所指出的,这个问题似乎从 1.0.0a 版开始就消失了。

现在,为了确认 libcurl 启用了 SSL 支持,请运行以下代码:

curl_version_info_data * vinfo = curl_version_info( CURLVERSION_NOW );
if( vinfo->features & CURL_VERSION_SSL )
// SSL support enabled
else
// No SSL

就这么简单。

关于winapi - 在 Windows 上构建支持 SSL 的 libcurl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/197444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com