当前位置: 首页 > news >正文

在 Windows 上使用 Visual Studio 编译 CURL

导语:

  • 教你科学地编译 Windows 版本的 libcurl (使用Windows SSPI或者OpenSSL)

准备工具

  • CMake (3.4.0)
  • Zlib (1.2.8)
  • libcurl (7.45.0)
  • OpenSSL (1.0.2d)
  • Visual Studio 2015

目标

  • 得到可以使用的 libcurl 静态库

步骤

  • 编译Zlib

    打开CMake,把 Zlib 目录下的 CMakeList.txt 拖进去,生成解决方案,这一步不能用 contrib\vstudio 下的 sln,里面的坑不少,尤其是低版本转高版本,生成解决方案后用VS打开,然后编译 Zlib 的静态库。

  • 编译 OpenSSL (如果用 SSPI 可略过这步)

    1. 装一个32位的Perl
    2. perl Configure VC-WIN32 no-asm --prefix:安装目录
    3. ms\do_nasm
    4. nmake -f ms\nt.mak -a
    5. nmake -f ms\nt.mak install
  • 编译 libcurl

    1. CMake 打开 CMakeList.txt
    2. Add Entry

      ZLIB_INCLUDE_DIR D:/developer/include/zlib

      ZLIB_LIBRARIES D:/developer/library/zlib

      OPENSSL_INCLUDE_DIR D:/developer/include

      OPENSSL_LIBRARIES D:/developer/library/openssl

    3. 注意勾选 Advanced 否则有可能失效

    4. Configure时,你要么用 OpenSSL,要么用Windows SSPI,如果你用 OpenSSL,在用 CMake 生成CURL的解决方案时,要把 CURL_WINDOWS_SSPI 这个选项的给去掉(要出现这个选项,需要勾选 CMake 的 Advanced),否则会出现结构重定义的问题,如果你不使用 OpenSSL,不传 OPENSSL_INCLUDE 和 OPENSSL_LIBRARIES 进去就好,然后把CMake里那个CMAKE_USE_OPENSSL的选项给去掉,不过前提是你是在编译Windows用的libcurl。

结束

  • 开启Visual Studio 2015 狂编译代码吧

相关文章:

  • Android生成表对应的类与访问表对应的类
  • React中的“虫洞”——Context
  • 第二天(tomcat与web程序结构与Http协议与HttpUrlConnection)
  • Mac 自定义Terminial
  • C学习笔记(七)C控制语句:分支和跳转
  • 文档对象模型-DOM(一)
  • 盛一平自我介绍
  • 《Java高级程序设计》第二次作业
  • 在PHP中常遇到的变量处理函数库(isset()、unset()、empty、is_array...
  • Asp.Net中级 - 5.HttpHandler案例
  • Bootstrap学习笔记(一)-----表单
  • MySQL体系结构图
  • [JMS 3] ActiveMQ实现简单的helloworld
  • nullnull阿里巴巴2013实习生招聘笔试题
  • iOS:OC与JS交互
  • jquery cookie
  • leetcode-27. Remove Element
  • magento 货币换算
  • React组件设计模式(一)
  • Redis字符串类型内部编码剖析
  • 给Prometheus造假数据的方法
  • 解析带emoji和链接的聊天系统消息
  • 聚类分析——Kmeans
  • 聊聊directory traversal attack
  • 前端攻城师
  • 一个JAVA程序员成长之路分享
  • 字符串匹配基础上
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 你对linux中grep命令知道多少?
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #if 1...#endif
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (09)Hive——CTE 公共表达式
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (三)终结任务
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)3D模板阴影原理
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)Unity3DUnity3D在android下调试
  • .NET CORE Aws S3 使用
  • .net framework4与其client profile版本的区别
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NetCore实践篇:分布式监控Zipkin持久化之殇
  • .NET导入Excel数据
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET开源快速、强大、免费的电子表格组件
  • .NET是什么
  • .NET中GET与SET的用法