Implementing libcurl: Difference between revisions
Jump to navigation
Jump to search
Note:Remember that you will need to repeat steps 8-10 in both Release and Debug configurations.
m (→Usage) |
m (linked the german translation) |
||
Line 1: | Line 1: | ||
{{otherlang2 | |||
|de=Implementing_libcurl:de | |||
}} | |||
{{toc-right}} | {{toc-right}} | ||
Revision as of 01:55, 26 April 2013
libcurl is a free library that can download data from the internet. It supports just about every protocol imaginable, and is available under a MIT/X derivative license.
Implementation
Windows
- Download the latest version of libcurl.
- Extract the
\lib
and\include
folders to a convenient location. - Open libcurl's VS project and change it to Release mode.
- Go to libcurl > Properties > C/C++ > Preprocessor > Definitions and add
CURL_STATICLIB
. Unless you really do want to use LDAP, addHTTP_ONLY
too. - Go to libcurl > Properties > C/C++ > Code Generation > Runtime Library and change it to read
Multi-threaded (/MT)
. - Build libcurl.
- Add
libcurl.lib
to your main project. The easiest way is to drag it onto the Solution Explorer. - Go to Your Project > Properties > C/C++ > Preprocessor > Definitions and add
CURL_STATICLIB
, as you did to curl itself. - Go to Your Project > Properties > C/C++ > General > Additional Include Directories and add the libcurl
\include
folder you extracted earlier. - Go to Your Project > Linker > Input > Additional Dependencies and add
ws2_32.lib
. If you want to use LDAP, addwldap32.lib
as well. #include "curl/curl.h"
and start coding!

Linux
[Todo]
Usage
Here is how to write the contents of a web page to the console:
#include "curl/curl.h"
// Called when curl receives data from the server
static size_t rcvData(void *ptr, size_t size, size_t nmemb, void *userdata)
{
Msg((char*)ptr); // up to 989 characters each time
return size * nmemb;
}
void PrintPage()
{
CURL *curl;
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, "developer.valvesoftware.com");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, rcvData);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
ConCommand print_page("print_page", PrintPage);