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:\usr\local\ssl

需要注意的是,由於我的系統是64位的。我的vcvars32.bat在C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin這個目錄中。

 

使用時需要指定頭文件路徑:

C:\usr\local\ssl\include

庫的路徑:

C:\usr\local\ssl\lib

同時要把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.0\projects\Windows\VC12,打開curl-all.sln。里面有兩個工程,

 

選擇libcurl。配置選下面這個:

 

 配置屬性-VC++目錄-》包含目錄  要指定openssl的頭文件路徑。

配置屬性-VC++目錄-》庫目錄 要指定openssl的庫目錄。

 

然后直接編譯就好了。

curl-7.61.0\build\Win32\VC12\DLL Release - DLL OpenSSL

這個目錄下會生成 libcurl.lib  libcurl.dll。這就大功告成了。

使用時的頭文件路徑是\curl-7.61.0\include

 

三、測試

可以參考這個: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的庫拷貝進來。執行紅色框兩個命令。出現下面的結果就表示你成功了。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM