Visual Stdio 2019下编译和配置Libcurl
导言:本文是在VS2019下配置libcurl的一个教程,涉及到libcurl的编译
文章目录
1、提前资源下载、准备
VS2019的下载
官网:https://visualstudio.microsoft.com/zh-hans/vs/
安装教程: 一位博主的超详细的安装、使用教程
Libcurl的下载
官网:https://curl.haxx.se/download.html
下载完成后-开始解压到一个文件夹里,我是直接解压到当前文件夹下面的
进入到解压的文件夹下:先执行一下buildconfi.bat(双击就OK了)
介绍一下winbuild文件夹,可不看这个,
这个路径是一会儿我们需要的,这个路径以你下载保存的路径为准哈
Makefile.vc是要被编译的文件
到这里 完成进度:30%
2、编译libcurl
使用VC native tool 命令行编译
1、打开VS2019的命令行工具
选择合适的编译平台
2、使用命令进行编译
1、先进入之前下载并解压的文件的winbuild目录
2、再执行nmake /f Makefile.vc mode=static VC=15 MACHINE=x86 DEBUG=no
(这个图是x86架构release版)
(这个图是x86架构debug版)
命令是:(nmake /f Makefile.vc mode=static VC=15 MACHINE=x86 DEBUG=no)
命令的部分参考
mode | 是指编译的方式 |
---|---|
mode=static | 就是静态编译,把需要的文件全部放在这个库里面,东西都在自己肚子里 |
mode=dll | 动态编译,把需要的文件通过外部链接来达到,不安全不推荐,为啥?因为这种编译生成的库文件里面有一部分文件是在外部,是这个库引用的外部文件,东西不在自己肚子里 |
VC | 是指对应VisualStdio的版本,下载官网的VC最高支持版本是(Vs2015)15 |
---|---|
VC=15 | 这个VS2019是支持VC=15的,VS2017也是支持VC=15的,VS2019是从VS2017升级而来的,核心功能都是差不多的, |
VC=14 | VS2017早期版本是支持VC=14的 |
MACHINE | 就是指CPU基于哪种方式架构的机器,现在一般是x86或x64的 |
---|---|
x86 | 就是支持操作系统32位的,编译完成会生成这个类型的对应的库 |
x64 | 就是支持操作系统64位的,编译完成会生成这个64位类型的对应的库 |
DEBUG | 就是是否支持调试版本的意思 |
---|---|
DEBUG=no | 生成的是release版本的库,支持发布版本的应用 |
DEBUG=yes | 生成的是debug版的库,我们一般调试用的版本 |
3、保存编译好的libcurl
1、编译完成的位置
2、我将编译生成的库,放置于其他位置以便以后使用,
我放置的位置是在D盘,我也编译了debug版的以便后面使用
完成进度:70%
3、配置VS2019项目
新建win32控制台项目
如下图的新建过程
打开新建界面
选择控制台应用
自己命名项目名字就可以啦
配置项目
1、在项目栏里打开该项目的属性
2、选择版本,这里我是使用的:debug–x86(Win32也可以看成x86)
3、去配置include、lib,以便让编译器找到对应的头文件和链接库
4、之前我们是用的静态编译(mode=static 还记得吗?),所以需要将CURL_STATICLIB添加至工程。
如何添加:直接在在那个下拉列表里面去新建一项,输入:CURL_STATICLIB 保存就可以了,
5、敲黑板的时候啦:链接器-输入-附加依赖项里添加以下的库
libcurl_a_debug.lib
Ws2_32.lib
Wldap32.lib
winmm.lib
Crypt32.lib
Normaliz.lib
注意哦!
这里的 libcurl_a_debug.lib 是在debug下的库,如果你选的是release下的库就应该是:libcurl_a.lib
这些库的具体位置是在这个文件夹下
这个是debug版的
这个是release版的
6、还有要配置一个运行库的模式
我们是使用的是静态编译下的debug版的libcurl,所以在下面的 -运行库里选择了 (/MDd)
如果编译了release版,在下面选择(/MD)。
如何选择可以参考下面这个表
静态编译 | 动态编译 | |
---|---|---|
debug | (/MDd) | (/MTd) |
release | (/MD) | (/MT) |
配置结果如下
7、在程序的调试栏也要选择 debug–x86
测试运行情况
1、测试代码
#include <curl/curl.h>
int main(int argc, char* argv[]) {
CURL* curl = 0;
CURLcode res;
curl = curl_easy_init();
if (curl != 0) {
curl_easy_setopt(curl, CURLOPT_URL, "https://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;
}
运行的结果
这个是从百度网页读取的一个网页文件,下面的文件格式有些问题主要是编码方式有问题
这样基本上配置完成了