- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 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.2600 和 x86。您可能会提示 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.lib 和 ssleay32.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/
我的 processmaker 安装遇到了一些问题。我正在尝试使用本指南 [url]http://wiki.processmaker.com/index.php/ProcessMaker_Ubuntu
我正在使用 ShareKit。发送 SMS 消息使用 MFMessageComposeViewController,用户看到标题“文本”。我想将该标题更改为更能反射(reflect)实际可用内容的内容
我需要在我的一个针对 Gingerbread 的 Android 应用程序中使用操作栏和 fragment 的组合。所以我使用了 v7 支持库中的操作栏和 v4 支持库中的 fragment ,并使用
我明白为什么浏览器 vendor 不想帮助我阻止他们的 UI 线程。但是,我不明白为什么会有: Web Workers 中没有 sleep (2) 没有同步 WebSockets API 有一个syn
最近我的组织正在考虑使用 Docker。我们组使用的是cloudera CDH 5.1.2。 1) cloudera 是否与 Docker 容器兼容?2) docker 和cloudera 组合是否存
我正在尝试通过编译在 Mac 上安装 rsync 3.2.3。但是,我想安装所有功能。为此,它需要一些库,此处 ( https://download.samba.org/pub/rsync/INSTA
我一直在使用 PyDev 成功运行 nose 测试,并想试试 nose2。 所以我安装了它 pip install nose2 复制/粘贴来自 http://nose2.info/ 的示例代码进入名为
我想知道 LLVM 中是否有任何函数/方法可以在 LLVM IR 中添加 Open-MP 构造。 llvm-3.0 是否仍然支持 OpenMP 指令? 最佳答案 OpenMP 是一种高级语言扩展。因此
我对 CUDA 编程非常陌生。我正在浏览 SDK 附带的示例。我能够编译代码,但是当我运行它时,出现以下错误: "clock.cu(177) : CUDA Runtime API error 38:
RStudio 是用于 R 开发的出色 IDE。我想知道是否有任何方法可以很好地支持 HiDPI 分辨率? 我目前有 13 英寸显示器和 3200x1800 分辨率,甚至很难阅读 RStudio 选项
我正在寻找一种有助于为 Django 项目提供 RDF 支持的工具。 到目前为止,我发现了两个: django-rdf - 最后一次修改是在 4 年前,所以它看起来像是一个死项目。 djubby -
我刚刚尝试了一些 JS 核心原则,发现引擎评估链接的关系运算符而不会引发错误。相反,他们以我自己无法理解的方式进行评估。 console.log(1 4 > 3 > 2 > 1); //false,
我知道 etexteditor 和 vim/emacs。 是否有任何其他 Windows 编辑器支持类似 textmate 的片段(例如,您编写触发词,按 Tab,它更改为某些内容,再次按 Tab,它
我正在尝试找出验证给定集群的网络策略配置的最佳方法。 According to the documentation Network policies are implemented by the ne
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
Z3 会支持 AUFBV 吗? 对于以下脚本: (set-logic AUFBV) (declare-fun x () (_ BitVec 16)) (declare-const t (Array (
使用分部类编写 NUnit 测试的优缺点是什么? 我要开始了: 亲:可以测试私有(private)方法 缺点:TDD 不再可能了 还有什么? 最佳答案 缺点:要么您必须测试与您发布的版本不同的构建,要
它很容易(对于 90% 的 aop 特性)在没有任何语言本身支持的情况下做到这一点,就像大多数动态语言如 python 和 ruby 一样。然而,Dojo在 1.3.2 上直接支持它.最新版本发生
我在我的 android 应用程序中使用亚洲字符,我已经了解到某些字符无法显示,因为系统字体不支持它们。我查询了一个包含亚洲字符的数据库,并且经常检索到无法显示的标志。这些情况对我的应用程序来说通常不
你好,我想实现一个控件,我想在用户键入@字符时启用该控件,直到未填充运行文本中的空格为止,它应该显示用户列表,@符号后键入的文本应该显示基于键盘字符的建议,就像我们在上面看到的那样Twitter 或
我是一名优秀的程序员,十分优秀!