vs2017---vs2010 如何编译和使用libcurl库

参考:https://blog.csdn.net/DaSo_CSDN/article/details/77587916

平台环境:

win10,   vs2017

1,从网站下载编译好的库文件:

如果不想自己手动编译,可以直接从这里下载对应的库文件:https://windows.php.net/downloads/php-sdk/deps/

目前提供的有vc11(vs2012),   vc14(vs2015),   vc15(vs2017),每个版本都有x64和x32版本。


2,libcurl手动编译源码:

(1)在这里https://github.com/curl/curl下载源码,注意选择分支,目前使用的分支为7.59.0

(2)进入到下载的源码文件夹中,双击buildconf.bat文件运行

(3)进入curl文件夹中的“winbuild”文件夹,并复制其文件夹路径,例如:E:\xxxxxxxxxx\curl_7.59.0\winbuild

(4)打开开始菜单,找到vs2017,编译64位,选择"适用于 VS 2017 的 x64 本机工具命令提示",编译32位,选择"适用于 VS 2017 的 x86 本机工具命令提示",这里使用64位为例,  右键以管理员身份运行,进入到命令行中,输入命令: cd  /d   E:\xxxxxxxxxx\curl_7.59.0\winbuild,进入到此目录

(5)输入:  nmake /f Makefile.vc mode=static VC=15 MACHINE=x64 DEBUG=no   。 
        如果想使用动态编译,将“mode=static”改为“mode=dll”。 
        如果使用其他版本Visual Studio,“VC=”后面的数字应该改为该Visual Studio版本。 
        如果使用x86,将“MACHINE=x64”改为“MACHINE=x86”。 

        如果需要debug版,将“DEBUG=no”改为“DEBUG=yes”。

(6)输入上面命令之后,回车,等待编译完成,

   打开curl源码文件夹中的“builds”文件夹,将名字最短的文件夹备份(如果x64和x86都编译了,则需要备份两个名字最短的文件夹),curl文件夹如果无其他需要则可全部删除。这个库文件就是我们最终要调用的文件。编译完成。


3,如何使用库文件

本文将编译生成的文件夹剪切至其他路径,以便长期使用。 
vs2017---vs2010 如何编译和使用libcurl库_第1张图片

新建一个项目。本文选择新建一个名为“Test”的空项目。 
vs2017---vs2010 如何编译和使用libcurl库_第2张图片

右击项目,选择“Properties”。 
vs2017---vs2010 如何编译和使用libcurl库_第3张图片

选择需要的配置。 
vs2017---vs2010 如何编译和使用libcurl库_第4张图片

将刚刚编译生成的文件夹中的“include”文件夹和“lib”文件夹添加至工程。(如果编译了debug版libcurl,则应将debug文件夹中的内容添加至debug配置工程) 
vs2017---vs2010 如何编译和使用libcurl库_第5张图片

将“libcurl_a.lib”添加至工程。 
vs2017---vs2010 如何编译和使用libcurl库_第6张图片

如果你使用了静态编译libcurl,则需将“CURL_STATICLIB”添加至工程。 
vs2017---vs2010 如何编译和使用libcurl库_第7张图片

如果没有编译debug版libcurl,则需要将“Runtime Library”改为Release版(即后面不带小写字母“d”)。同时官方并不建议使用“/MT”或“/MTd”。 
vs2017---vs2010 如何编译和使用libcurl库_第8张图片

测试代码

#include     

int main(int argc, char* argv[]) {
    CURL *curl = nullptr;
    CURLcode res;
    curl = curl_easy_init();
    if (curl != nullptr) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");
        /* example.com is redirected, so we tell libcurl to follow redirection */
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);
        /* Check for errors */
        if (res != CURLE_OK) {
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));
        }
        /* always cleanup */
        curl_easy_cleanup(curl);
    }

    return 0;
}

你可能感兴趣的:(vs2017---vs2010 如何编译和使用libcurl库)