visual studio 2017 libcurl
Visual Studio(VS2017)编译并使用curl C/C++ HTTP GET POST libcurl(二、调用示例)
https://my.oschina.net/u/4370838/blog/4326553
https://curl.haxx.se/libcurl/c/example.html
VS生成代码的时候有一个运行库选项(项目属性 - 配置属性 - C/C++ - 代码生成 - 运行库)/MT和/MD(/MTd和/MDd是对应的debug版本)
就是说你编译时如果加了RTLIBCFG=static这个选项,就相当于编译了/MT版本的libcurl,否则是/MD版本的
vs2017—vs2010 如何编译和使用libcurl库
1,从网站下载编译好的库文件:
如果不想自己手动编译,可以直接从这里下载对应的库文件:https://windows.php.net/downloads/php-sdk/deps/
目前提供的有vc11(vs2012), vc14(vs2015), vc15(vs2017),每个版本都有x64和x32版本。
如果你是VS2017且未更新到最新版,VC=15建议改为VC=14。
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文件夹如果无其他需要则可全部删除。这个库文件就是我们最终要调用的文件。编译完成。
便捷的方法
后来发现有更便捷的方法,curl-7.66.0\projects\Windows 目录下有现成的MSVC项目文件!
1
VS2017/2019+x64+静态编译:
输入nmake /f Makefile.vc mode=static VC=15 MACHINE=x64 DEBUG=no。
如需动态编译,将mode=static改为mode=dll。(本文仅演示静态编译,同时curl官方也不建议使用动态编译)
如需编译为x86,将MACHINE=x64改为MACHINE=x86。
如需编译为debug版,将DEBUG=no改为DEBUG=yes。
如果你是VS2017且未更新到最新版,VC=15建议改为VC=14。
更详细的编译指令及说明可以打开winbuild文件夹中的BUILD.WINDOWS.txt查看。
1
您可以使用vcpkg安装curl:
从> https://github.com/microsoft/vcpkg/archive/2019.08.zip 并将其解压缩到您选择的文件夹中(例如C:\ vcpkg )
打开Developer Command Prompt for VS 2017(请参阅Windows开始"菜单或%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Visual Studio 2017\Visual Studio Tools),然后将cd移至C:\vcpkg
运行bootstrap-vcpkg.bat
运行vcpkg.exe integrate install
运行vcpkg.exe install curl
在Visual Studio中创建一个新的C ++项目,您就可以开始使用-结合上面的示例进行尝试.无需修改项目设置.
2
6、还有要配置一个运行库的模式
我们是使用的是静态编译下的debug版的libcurl,所以在下面的 -运行库里选择了 (/MDd)
如果编译了release版,在下面选择(/MD)。
如何选择可以参考下面这个表
Visual Studio 2017编译和配置libcurl开发环境
https://blog.csdn.net/bency/article/details/80773932
下载
解压到
F:\mfc_work\curl-7.80.0
解压文件,进入目录curl-7.80.0,运行buildconf.bat
进入curl-7.80.0目录下的winbuild目录,复制路径
F:\mfc_work\curl-7.80.0\winbuild
进行x64编译
输入 :
cd /D F:\mfc_work\curl-7.80.0\winbuild
nmake /f Makefile.vc mode=static VC=15 MACHINE=x64 DEBUG=no
编译 很快,不到2分钟
把文件夹
libcurl-vc15-x64-release-static-ipv6-sspi-schannel
复制到其他的地方,以便长期使用
默认的是 x86 ,估计需要修改
libcurl_a.lib;
ws2_32.lib;
winmm.lib;
wldap32.lib;
Crypt32.lib;
Normaliz.lib;
CURL_STATICLIB;
_CRT_SECURE_NO_WARNINGS;
运行例子
测试例子:https://curl.haxx.se/libcurl/c/fileupload.html
#include <curl/curl.h>
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;
}