码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Libcurl Windows 下的编译及使用-支持HTTPS


    笔者在产品开发过程中需要用到https通讯,移植libcurl中遇到很多问题,经过搜索和实践总结一个行之有效的方案,特总结系统对大家有所帮助

    1. 环境搭建:

    libcurl: curl - Download

    VS: Visual Studio 2022, 并安装好本地开发的C++, MFC桌面开发SDK

    2. LIB库编译

    打开VS2022命令行工具,注意这里的版本是17,进入到libcurl目录

     分辨执行命令:

    //编译为静态链接库

    set RTLIBCFG=static

    //以下俩个分辨编译为debug,release模式

    nmake /f Makefile.vc mode=static vc=17 debug=yes

    nmake /f Makefile.vc mode=static vc=17 debug=no

    经过一段时间,在libcurl/build目录下已经生成我们需要的库文件及相关头文件,其中红色部分为主要目录,其它目录都可以删除

     打开"libcurl-vc17-x86-debug-static-ipv6-sspi-schannel",可以看到如下目录

    至此,编译库文件算是完成了。

    3. 测试DEMO

    新建Windows Console工程,将刚才生成的"include","lib"拷贝工程源码目录中,修改源码

    //在include "pch.h"之后增加

    #define CURL_STATICLIB

    //增加libcurl库的引用
    #include "curl/curl.h"

     //增加所必须库
    #pragma comment (lib, "Normaliz.lib")
    #pragma comment (lib, "Ws2_32.lib")
    #pragma comment (lib, "Wldap32.lib")
    #pragma comment (lib, "Crypt32.lib")
    #pragma comment (lib, "Advapi32.lib")

    #pragma comment (lib, "lib/libcurl_a_debug.lib")

     测试代码如下:

    1. int testPost(void)
    2. {
    3. CURL* curl;
    4. CURLcode res;
    5. /* In windows, this will init the winsock stuff */
    6. curl_global_init(CURL_GLOBAL_ALL);
    7. /* get a curl handle */
    8. curl = curl_easy_init();
    9. if (curl) {
    10. /* First set the URL that is about to receive our POST. This URL can
    11. just as well be a https:// URL if that is what should receive the
    12. data. */
    13. curl_easy_setopt(curl, CURLOPT_URL, "https://curl.se/libcurl/c/http-post.html");
    14. /* Now specify the POST data */
    15. //curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
    16. curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
    17. curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
    18. /* Perform the request, res will get the return code */
    19. res = curl_easy_perform(curl);
    20. /* Check for errors */
    21. if (res != CURLE_OK)
    22. fprintf(stderr, "curl_easy_perform() failed: %s\n",
    23. curl_easy_strerror(res));
    24. /* always cleanup */
    25. curl_easy_cleanup(curl);
    26. }
    27. curl_global_cleanup();
    28. return 0;
    29. }

     

  • 相关阅读:
    尚硅谷Vue系列教程学习笔记(6)
    uniapp初步搭建:如何引入uview库(跨移动多端ui库)
    阿里P7爆款《K8s+Jenkins》技术笔记,读了后确实有实质性的帮助
    Java学习笔记------抽象类和抽象方法
    交换机和路由器技术-27-OSPF路由重分发
    C# 连接SQL Sever 数据库与数据查询实例 数据仓库
    OpenCV学习笔记(四)——对视频的读取操作
    【Python从入门到实践】Python初识
    DeepWalk: Online Learning of Social Representations(2014 ACM SIGKDD)
    代码随想录算法训练营第三十七天|738.单调递增的数字 968.监控二叉树 总结
  • 原文地址:https://blog.csdn.net/wzbhbb/article/details/126953464
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号