zoukankan      html  css  js  c++  java
  • vs2013 配置支持https的libcurl

     需求:在vs2013上配置支持https协议的libcurl

    环境:win7(64)vs2013

    一、安装openssl

    需要先安装nasm和ActivePerl。

    nasm需要手动配置环境变量。ActivePerl下载下来一路next安装就好了。

    我安装openssl的时候是2018-08-03。不保证以后下面这个链接的方法依然有用。

    我参考的是这个:https://blog.csdn.net/hpp24/article/details/54406424

    亲测有用。只不过生成的include lib 等目录不对。居然在这目录C:usrlocalssl

    需要注意的是,由于我的系统是64位的。我的vcvars32.bat在C:Program Files (x86)Microsoft Visual Studio 12.0VCin这个目录中。

    使用时需要指定头文件路径:

    C:usrlocalsslinclude

    库的路径:

    C:usrlocalssllib

    同时要把libeay32.dllssleay32.dll拷贝到lib目录下。

    使用时要把上面两个dll跟可执行文件放在一起。

    #pragma comment(lib, "ssleay32.lib")

    #pragma comment(lib, "libeay32.lib")

    二、编译libcurl

    直接去下载最新的。https://curl.haxx.se/download.html

    我下载的是这个curl-7.61.0

    解压,之后进入curl-7.61.0projectsWindowsVC12,打开curl-all.sln。里面有两个工程,

     

    选择libcurl。配置选下面这个:

     

     配置属性-VC++目录-》包含目录  要指定openssl的头文件路径。

    配置属性-VC++目录-》库目录 要指定openssl的库目录。

    然后直接编译就好了。

    curl-7.61.0uildWin32VC12DLL Release - DLL OpenSSL

    这个目录下会生成 libcurl.lib  libcurl.dll。这就大功告成了。

    使用时的头文件路径是curl-7.61.0include

    三、测试

    可以参考这个:https://curl.haxx.se/libcurl/c/https.html

    下面上我的代码:

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<curl/curl.h>
    #include<iostream>
    
    using namespace std;
    
    #pragma comment(lib, "libcurl.lib")
    #pragma comment(lib, "ssleay32.lib")
    #pragma comment(lib, "libeay32.lib")
    
    void test2()
    {
        curl_global_init(CURL_GLOBAL_DEFAULT);
    
        CURL *curl;
        CURLcode res;
        curl = curl_easy_init();
        if (curl) 
        {
            /* First set the URL that is about to receive our POST. This URL can
            just as well be a https:// URL if that is what should receive the
            data. */
            curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com");
    
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);//忽略证书检查
            curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
    
            /* Now specify the POST data */
            curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "name=daniel&project=curl");
    
            /* Perform the request, res will get the return code */
            res = curl_easy_perform(curl);
            if (res)
            {
                cout << "curl_easy_perform failed res = " << res << " ErrInfo:" << curl_easy_strerror(res) << endl;
            }
            else
            {
                cout << "curl_easy_perform success " << endl;
            }
            
            /* always cleanup */
            curl_easy_cleanup(curl);
        }
        curl_global_cleanup();
    }
    
    int main()
    {
        test2();
        getchar();
        return 0;
    }

     要配置curl的头文件路径和库路径,和openssl的库路径。

    直接运行就好了。

     

    四、总结

    1)编译openssl比较费时间,这一步一定要做,不要想偷懒,按步骤一步一步来就好了。

    2)运行curl测试程序时需要链接libcurlopenssl的那两个库。特别注意要把库放到程序运行目录中去。我最开始怀疑自己是不是没编译到包含openssllibcurl。一直在库目录上折腾,没有放到运行目录中去,折腾了将近一天。

    3)查看自己编译的libcurl是否支持https,可以编译curl-all.sln中的curl项目,配置一样,要选openssl的。然后会编译出一个curl.exe。然后打开系统自带的cmd.exe,切换到生成curl.exe的目录,把两个openssl的库拷贝进来。执行红色框两个命令。出现下面的结果就表示你成功了。

     

  • 相关阅读:
    洛谷3163 CQOI2014危桥 (最大流)
    UVA557 汉堡 Burger
    洛谷1950 长方形 (单调栈)
    洛谷3317 SDOI2014重建(高斯消元+期望)
    洛谷4035 JSOI2008球形空间产生器 (列柿子+高斯消元)
    test1
    test
    background
    bzoj1075
    bzoj1074
  • 原文地址:https://www.cnblogs.com/xcywt/p/9418186.html
Copyright © 2011-2022 走看看