您的位置:首页 > 编程语言 > C语言/C++

Visual Studio(VS2017)编译并配置C/C++-libcurl(7.55.1)开发环境

2017-08-25 23:43 811 查看

开发环境

Window 10 x64 Enterprise [10.0.15063.540]

下载地址1:https://msdn.itellyou.cn/

下载地址2:https://msdn.rg-adguard.net/public.php

Visual Studio 2017 Enterprise [15.3.2]

下载地址:https://www.visualstudio.com/downloads/

libcurl 7.55.1

下载地址:https://curl.haxx.se/download.html

编译libcurl

打开上方libcurl的下载地址,下载最新版的压缩包。



解压。本文选择解压至桌面(强烈建议解压至桌面)。



打开curl文件夹,运行“buildconf.bat”



进入curl文件夹中的“winbuild”文件夹,并复制其路径。



本文以编译x64为例

在开始菜单中找到“Visual Studio 2017”文件夹,编译64位则右击“x64 Native Tools Command Prompt for VS 2017”,编译32位则右击“x86 Native Tools Command Prompt for VS 2017”,选择“Run as administrator”



输入”cd “(有空格),再粘贴刚刚复制的“winbuild”文件夹路径,回车。(如果命令行盘符和“winbuild”文件夹所在盘盘符不同,则需要先切到“winbuild”文件夹所在盘)



VS2017+x64+静态编译:

输入“nmake /f Makefile.vc mode=static VC=14 MACHINE=x64 DEBUG=no”。

如果想使用动态编译,将“mode=static”改为“mode=dll”。

如果使用其他版本Visual Studio,“VC=”后面的数字应该改为该Visual StudioVC版本。

如果使用x86,将“MACHINE=x64”改为“MACHINE=x86”。

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



回车,等待编译完成,关闭控制台界面。

打开curl文件夹中的“builds”文件夹,将名字最短的文件夹备份(如果x64和x86都编译了,则需要备份两个名字最短的文件夹),curl文件夹如果无其他需要则可全部删除。



配置工程

本文将编译生成的文件夹剪切至其他路径,以便长期使用。



新建一个项目。本文选择新建一个名为“Test”的空项目。



右击项目,选择“Properties”。



选择需要的配置。



将刚刚编译生成的文件夹中的“include”文件夹和“lib”文件夹添加至工程。(如果编译了debug版libcurl,则应将debug文件夹中的内容添加至debug配置工程)



将“libcurl_a.lib”添加至工程。



如果你使用了静态编译libcurl,则需将“CURL_STATICLIB”添加至工程。



如果没有编译debug版libcurl,则需要将“Runtime Library”改为Release版(即后面不带小写字母“d”)。同时官方并不建议使用“/MT”或“/MTd”。



测试代码

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息