Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

最近C#转型C++了(因为winform开发的程序太太太容易被破解了,以及我越来越对执行效率关注了),,花费了不少时间,,雀氏啊,,让我越学,越感觉自己会的还是太少太少,,

记录一下吧,,这个问题我作为C++新手,百度了两天了都,离谱的解决不了,就离谱,,,给我整的都快自闭了,,

开发软件:Visual Studio 2019

开发环境:Windows 10 64位

一、下载libcurl源代码

libcurl的官方网站是 https://curl.haxx.se/

找到里面的Download菜单里面下载最新源码

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

二、解压并准备编译源码

解压curl-8.0.1.zip到方便的英文目录下(最好还是不要有中文)

这是目录结构

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

以管理员身份运行一下buildconf.bat批处理

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

在开始菜单中找到Visual Studio 2019文件夹,

如果你想要编译64位则右击x64 Native Tools Command Prompt for VS 2019,

编译32位则右击x86 Native Tools Command Prompt for VS 2019,

右键选择->更多->管理员方式运行。

这里我编译x64版本的,所以我选择x64 Native Tools Command Prompt for VS 2019

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

切换到你解压的curl-8.0.1文件夹内,进入到winbuild文件夹里,然后复制当前路径

在x64 Native Tools Command Prompt for VS 2019里输入cd命令然后再按一下空格 再粘贴刚刚复制的路径,按回车执行

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

三、编译源码

VS2019 x64 静态编译debug版:

命令行输入:nmake /f Makefile.vc mode=static VC=19 MACHINE=x64 DEBUG=yes

如果想使用动态编译,将mode=static改为mode=dll。(本文仅教静态编译,同时curl官方也不建议使用动态编译)

如果使用x86,将MACHINE=x64改为MACHINE=x86(这时候得需要使用x86 Native Tools Command Prompt for VS 2019)。

如果需要release版,将DEBUG=yes改为DEBUG=no。

VC取值6,7,8,9,10,11,12,14,15,19

vc6 – VC6.0
vc7 – VS2002
vc7.1 – VS2003
vc8 – VS2005
vc9 – VS2008
vc10 – VS2010
vc11 – VS2012
vc12 – VS2013
vc13 – VS2014
vc14 – VS2015
vc15 – VS2017
vc19 – VS2019

输入完之后,

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

回车开始编译,编译完成后builds目录会生成的.lib

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

builds目录就在你解压的目录下面,

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

我所圈的是我们所需要的,另外两个是编译所产生的中间产物,可忽略不管

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

四、将编译产物放入到VS项目中

我们复制 include和lib目录,粘贴到我们的项目的根目录中去

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

1、因为我们编译的时候设置的编译条件就是x64位且是debug模式,所以我们要用这个模式进行运行

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

2、把.h和lib包含到工程

选择左边VC++ 目录,在右边包含目录添加$(ProjectDir)\include;

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

3、库目录添加$(ProjectDir)\lib;,$(ProjectDir)是项目目录的变量,在这个项目的值就是:,这样即使移动工程到不同文件夹也不会受影响

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

4、本项目静态编译,所以需要将CURL_STATICLIB添加至工程。选择C/C++->预处理器->预处理器定义:添加CURL_STATICLIB (或者 BUILDING_LIBCURL;HTTP_ONLY)  

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

5、添加其它需要的库

链接器->输入->附加依赖项:添加libcurl_a_debug.lib;msvcrt.lib;Ws2_32.lib;Wldap32.lib;winmm.lib;Crypt32.lib;Normaliz.lib;

这个libcurl_a_debug.lib(是编译生成的lib目录下面的lib的文件名)

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

6、最后点击应用并确定就行

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

五、测试curl请求

可以写代码测试了

#include <iostream>
#include<curl/curl.h>

int main()
{
    printf("test printf %s\r\n", "abc123");

    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);
    }

}

 

Visual Studio(VS2019)编译并使用curl C/C++ HTTP GET POST libcurl

测试可用,可以愉快的去爬虫了,但貌似只限制http,如果要https的话还得需要再弄个openssl,这个稍后写…

 

给大家提供一下我编译的x64和x86的debug和release静态库文件和头文件,可以直接拿着用

参考链接:

https://blog.csdn.net/cnicfhnui/article/details/106937886

https://blog.csdn.net/cnicfhnui/article/details/106955806

分享到:
赞(0)

请选择你看完该文章的感受:

1瞧一瞧 3扯淡 2学到了 2不懂 4正能量 1无聊

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址 (选填)