curl配置下載、安裝、使用\檔案下載
我下載的是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
因為編譯的時候選擇的是靜態編譯。
(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應該就可以動態編譯了。沒有嘗試過,只是提出一個猜想。
參考文獻: