Implementing libcurl: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
Line 10: Line 10:
# Extract the <code>\lib</code> and <code>\include</code> folders to a convenient location.
# Extract the <code>\lib</code> and <code>\include</code> folders to a convenient location.
# Open libcurl's VS project and change it to Release mode.
# Open libcurl's VS project and change it to Release mode.
# Go to ''libcurl > Properties > C/C++ > Preprocessor > Definitions'' and add <code title="The official docs say -DCURL_STATICLIB...they are wrong!">CURL_STATICLIB</code>. Unless you really do want to use [[wikipedia:LDAP|LDAP]], and <code>HTTP_ONLY</code> too.
# Go to ''libcurl > Properties > C/C++ > Preprocessor > Definitions'' and add <code title="The official docs say -DCURL_STATICLIB...they are wrong!">CURL_STATICLIB</code>. Unless you really do want to use [[wikipedia:LDAP|LDAP]], add <code>HTTP_ONLY</code> too.
# Go to ''libcurl > Properties > C/C++ > Code Generation > Runtime Library'' and change it to read <code>Multi-threaded (/MT)</code>.
# Go to ''libcurl > Properties > C/C++ > Code Generation > Runtime Library'' and change it to read <code>Multi-threaded (/MT)</code>.
# '''Build libcurl.'''
# '''Build libcurl.'''

Revision as of 14:38, 6 September 2010

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

  1. Download the latest version of libcurl.
  2. Extract the \lib and \include folders to a convenient location.
  3. Open libcurl's VS project and change it to Release mode.
  4. Go to libcurl > Properties > C/C++ > Preprocessor > Definitions and add CURL_STATICLIB. Unless you really do want to use LDAP, add HTTP_ONLY too.
  5. Go to libcurl > Properties > C/C++ > Code Generation > Runtime Library and change it to read Multi-threaded (/MT).
  6. Build libcurl.
  7. Add libcurl.lib to your main project. The easiest way is to drag it onto the Solution Explorer.
  8. Go to Your Project > Properties > C/C++ > Preprocessor > Definitions and add CURL_STATICLIB, as you did to curl itself.
  9. Go to Your Project > Properties > C/C++ > General > Additional Include Directories and add the libcurl \include folder you extracted earlier.
  10. Go to Your Project > Linker > Input > Additional Dependencies and add ws2_32.lib. If you want to use LDAP, add wldap32.lib as well.
  11. #include "curl/curl.h" and start coding! curl/easy.h is helpful too.
Note.pngNote:Remember that you will need to repeat steps 8-10 in both Release and Debug configurations.

Linux

[Todo]

Usage

Here is how to write the contents of a web page to the console:

// Called when curl receives data from the server
size_t rcvData( void *ptr, size_t size, size_t nmemb, void *userdata)
{
	char data = char(ptr);
	Msg(&data);
	return size;
}

void PrintPage()
{
	curl = curl_easy_init();
	curl_easy_setopt(curl, CURLOPT_URL, "curl.haxx.se");
	curl_easy_perform(curl);
	curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, rcvData);
	curl_easy_cleanup(curl);
}

ConCommand print_page("print_page", PrintPage);