curl配置下载、安装、使用\文件下载

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

我下载的是curl-7.58.0.tar.gz。举例下载路径为C://download,然后解压到当前文件夹,会得到文件夹curl-7.58.0。

接下来就是编译了。

Windows下编译如下:

X86版本编译操作如下:

1:windows图标+r同时按下,输入cmd(打开cmd控制台)

2:cd   C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat   初始化VC环境变量(本人使用VS2015)

3:cd c:\download\curl-7.58.0\winbuild

4:nmake /f Makefile.vc mode=static VC=14  在这里的mode=static表示静态编译,VC=14表示vs的版本。

5:builds文件夹就会有 libcurl-vc14-x86-release-static-ipv6-sspi-winssl 文件夹。

有兴趣的同志可以用notepad++打开Makefile.vc文件看看。

X64版本的编译操作如下:

(因为我用的版本是VS2015)

1:开始菜单 -> Visual Studio 2015 -> VS2015 x64 Native Tools Command Prompt

2:cd c:\download\curl-7.58.0\winbuild

3:nmake /f Makefile.vc mode=static VC=14  在这里的mode=static表示静态编译,VC=14表示vs的版本。

4:builds文件夹就会有 libcurl-vc14-x64-release-static-ipv6-sspi-winssl 文件夹。

接下来我就要说在VS下的配置使用了:

(默认X86)

1:新建工程。

2:进入工程后,工程属性->C/C++ > General > Additional Include Directories: 添加C:\download\curl-7.58.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include

3:Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions: 添加 CURL_STATICLIB

4:Configuration Properties > Linker > General > Additional Library Directories: 添加 C:\download\curl-7.58.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib

5:Configuration Properties > Linker > Input > Additional Dependencies: 添加 libcurl_a.lib。

测试代码如下:

#include <stdio.h>
#include <curl.h>   
/* For older cURL versions you will also need
#include <curl/types.h>
#include <curl/easy.h>
*/
#include <string.h>

size_t write_data(void *ptr, size_t size, size_t nmemb, FILE *stream) 
{
	size_t written = fwrite(ptr, size, nmemb, stream);
	return written;
}

int main(void) 
{
	CURL *curl;
	FILE *fp;
	CURLcode res;
	char *url = "http://stackoverflow.com";
	char outfilename[FILENAME_MAX] = "page.html";
	curl = curl_easy_init();
	if (curl)
	{
		fp = fopen(outfilename, "wb");
		curl_easy_setopt(curl, CURLOPT_URL, url);
		curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
		curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
		res = curl_easy_perform(curl);
		/* always cleanup */
		curl_easy_cleanup(curl);
		fclose(fp);
	}
	return 0;
}

这是一个文件下载的示例。

如果在编译的时候出现如下问题:

1>------ Build started: Project: LibCurl, Configuration: Debug Win32 ------
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main

1>C:\Users\Kyle\Documents\Visual Studio 2010\libcurl\VisualStudio\LibCurl\Debug\LibCurl.exe : fatal error LNK1120: 4 unresolved externals

可能是因为缺少这一项:Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions: 添加 CURL_STATICLIB

因为编译的时候选择的是静态编译。

此问题讨论解决网址:https://stackoverflow.com/questions/4176503/unresolved-symbols-when-linking-a-program-using-libcurl

(2)说到这有可能就人说我想建立X64的工程怎么办,那就说说X64工程

1:新建工程。

2:进入工程后,工程属性->C/C++ > General > Additional Include Directories: 添加C:\download\curl-7.58.0\builds\libcurl-vc12-x64-release-static-ipv6-sspi-winssl\include

3:Configuration Properties > C/C++ > Preprocessor > Preprocessor Definitions: 添加 CURL_STATICLIB

4:Configuration Properties > Linker > General > Additional Library Directories: 添加 C:\download\curl-7.58.0\builds\libcurl-vc12-x64-release-static-ipv6-sspi-winssl\lib

5:Configuration Properties > Linker > Input > Additional Dependencies: 添加 libcurl_a.lib。

测试代码也可以直接使用上面的代码。在使用过程中也可能遇到如上提示的问题,解决方式也如上所述。

(3)说说猜想,本人用notepad++打开Makefile.vc看过,如果把编译如上所提到的编译过程中的第四步,即4:nmake /f Makefile.vc mode=static VC=14  在这里的mode=static表示静态编译,VC=14表示vs的版本。中的mode=static,改成mode=dll应该就可以动态编译了。没有尝试过,只是提出一个猜想。

参考文献:

(1)VS2013配置curl:http://blog.csdn.net/totodum/article/details/51059380

(2)CMake 、 NMake 与 Windows 64 位程序构建:http://blog.csdn.net/icbm/article/details/52904496

(3)Unresolved symbols when linking a program using libcurl:https://stackoverflow.com/questions/4176503/unresolved-symbols-when-linking-a-program-using-libcurl

(4)curl / Download:https://curl.haxx.se/download.html


猜你喜欢

转载自blog.csdn.net/thecentry/article/details/79513924