<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>LSDEEX &#187; c++</title>
	<atom:link href="http://www.lsdeex.ru/archives/category/c/feed" rel="self" type="application/rss+xml" />
	<link>http://www.lsdeex.ru</link>
	<description>Сборник ФАКов и мануалов</description>
	<lastBuildDate>Tue, 31 Jan 2012 19:20:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Структура проекта на С++</title>
		<link>http://www.lsdeex.ru/archives/224</link>
		<comments>http://www.lsdeex.ru/archives/224#comments</comments>
		<pubDate>Sat, 24 Jul 2010 04:47:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://www.lsdeex.ru/?p=224</guid>
		<description><![CDATA[С php давно всё известно. Но в отношении десктопа следует изучить структуру поподробнее.
Взято с RSDN
> У меня в проекте много разных компонентов:
> исходники, 
/src/
/sources/
/includes/
/includes//

> чужие исходники,
/extern/
/
> ресурсы, 
/src/
/
> либы, 
/redist//
> дллки,
/redist//
> бинарники, 
результат сборки ?
/result/
/output/
/output/bin/
или необходиоые для сборки?
/tools//
> скрипты, 
/tools/scripts/
> логи, 
/build.log
> файлы IDE,
/
/product/
/
> временные файлы
/output/tmp
/output/
/tmp
> и быстро добавлять новые(не предусмотренные)
> компоненты, 
/src//
> проекты или [...]]]></description>
			<content:encoded><![CDATA[<p>С php давно всё известно. Но в отношении десктопа следует изучить структуру поподробнее.<br />
Взято с RSDN</p>
<p><strong>> У меня в проекте много разных компонентов:<br />
> исходники, </strong><br />
/src/<br />
/sources/<br />
/includes/<br />
/includes/<subsytem>/<br />
<span id="more-224"></span><br />
<strong>> чужие исходники,</strong><br />
/extern/
<projname>/</p>
<p><strong>> ресурсы, </strong><br />
/src/
<projname>/<resname></p>
<p><strong>> либы, </strong><br />
/redist/<vendor>/<br />
> дллки,<br />
/redist/<vendor>/</p>
<p><strong>> бинарники, </strong><br />
результат сборки ?<br />
/result/<br />
/output/<br />
/output/bin/</p>
<p><strong>или необходиоые для сборки?</strong><br />
/tools/<vendor>/</p>
<p><strong>> скрипты, </strong><br />
/tools/scripts/<br />
<strong>> логи, </strong><br />
/build.log</p>
<p><strong>> файлы IDE,</strong><br />
/<br />
/product/
<projname>/</p>
<p><strong>> временные файлы</strong><br />
/output/tmp<br />
/output/
<projname>/tmp</p>
<p><strong>> и быстро добавлять новые(не предусмотренные)<br />
> компоненты, </strong><br />
/src/<component>/</p>
<p><strong>> проекты или что то еще. </strong><br />
/src/
<project>/<br />
/products/
<project>/</p>
<p>Рекомендую постмотреть на структуру KDE/QT проектов, они как раз кросс-<br />
платформенные.</p>
<p>Имеет смысл начать с маленькой структуры:<br />
/ — корень проекта с главным конфигуратором и главным сборщиком<br />
/src — корень исходников<br />
/src/subprojectN -подпроект, один/несколько на подсистему<br />
/inсludes — сюда попадают все .h по тематикам после сборки проекта<br />
/inсludes/subsystemN<br />
/i18n — вся локализация, добавить по вкусу<br />
/bin — результат для проверки, источник для упаковки<br />
/bin/build-modeN — цели, debug/release/unix/win32/&#8230;.<br />
/library (aka externals, redist, modules&#8230; ) — иерархия заимствованных<br />
компонент<br />
/tools — утилиты сборки</p>
<p>> Подойдет книга или развернутая статья на эту тему. я видел разные<br />
структуры разных проектов и понимаю, что для<br />
> каждого проекта будет удобна своя структура. Интересует именно<br />
> специализированная литература по теме. IDE: VS2008, Qt Creator<br />
файлы IDE могут сосуществать вместе в</p>
<p>/products/
<project>/</p>
<p>но Qt больше любит:</p>
<p>/src/solution.pro<br />
/src/
<project>/projfile.pro</p>
<p>Главное: не Qt решение вынеси в отдельный<br />
проект чтобы остальные не знали о различной реализации.</p>
<p>/src/<mycross>/myapi<br />
/src/<mycross>/win32/<br />
/src/<mycross>/unix/</p>
<p>И резюме:<br />
Перетаскиваать файлы с места на место в С++ можно хоть каждый день.<br />
главное чтобы VCS это позволяла и все нужные проекту .H и A;SO;DLL;LIB<br />
появлялись всегда в одном и том же месте типа /includes &#038; /lib</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lsdeex.ru/archives/224/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Добавление curl в QtCreator</title>
		<link>http://www.lsdeex.ru/archives/148</link>
		<comments>http://www.lsdeex.ru/archives/148#comments</comments>
		<pubDate>Sun, 07 Feb 2010 10:06:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.lsdeex.ru/?p=148</guid>
		<description><![CDATA[добавление curl в QtCreator
0 скачать файлы, собранные для windows-mingw
http://www.sendspace.com/file/d3v6wv
1 скопировать libcurl.a libcurldll.a из папки &#8220;libs&#8221; в &#8220;C:\&#8230;\mingw\lib\&#8221; 
2 положить папку &#8220;curl&#8221; в &#8220;C:\&#8230;\mingw\include\&#8221;
3 добавляем libcurldll.dll и libcurl.dll из &#8220;libs&#8221; в папку с приложением (&#8221;project/Debug/&#8221;) 
4 в project.pro добавить
LIBS += -LC:/&#8230;/mingw/lib \
    -lcurl \
    -lcurldll
5 в main.cpp добавить #include 
проверка:
CURL [...]]]></description>
			<content:encoded><![CDATA[<p>добавление curl в QtCreator</p>
<p>0 скачать файлы, собранные для windows-mingw<br />
http://www.sendspace.com/file/d3v6wv</p>
<p>1 скопировать libcurl.a libcurldll.a из папки &#8220;libs&#8221; в &#8220;C:\&#8230;\mingw\lib\&#8221; </p>
<p>2 положить папку &#8220;curl&#8221; в &#8220;C:\&#8230;\mingw\include\&#8221;</p>
<p>3 добавляем libcurldll.dll и libcurl.dll из &#8220;libs&#8221; в папку с приложением (&#8221;project/Debug/&#8221;) </p>
<p>4 в project.pro добавить</p>
<p>LIBS += -LC:/&#8230;/mingw/lib \<br />
    -lcurl \<br />
    -lcurldll</p>
<p>5 в main.cpp добавить #include <curl/curl.h></p>
<p>проверка:</p>
<p>CURL *curl = curl_easy_init();</p>
]]></content:encoded>
			<wfw:commentRss>http://www.lsdeex.ru/archives/148/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Установка и использование Boost.Regex в связке с minGW + Eclipse в Windows</title>
		<link>http://www.lsdeex.ru/archives/47</link>
		<comments>http://www.lsdeex.ru/archives/47#comments</comments>
		<pubDate>Sat, 05 Dec 2009 13:35:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.lsdeex.ru/?p=47</guid>
		<description><![CDATA[Установка и использование Boost.Regex

1 качаем Boost отсюда http://www.boost.org/users/download/
2 распаковываем и запускаем bootstrap.bat, будет создан bjam.exe
3 создаем bjam.bat для компиляции, в нем пишем:
bjam &#8211;j2 &#8211;build-dir=C:\boost_build toolset=gcc &#8211;build-type=complete stage
pause
C:\boost_build  &#8211; путь к папке, куда будет компилится boost
4 после длительной компиляции получаем скомпилированные библиотеки в C:\boost_build\boost\bin.v2\libs\
для regex это
regex\build\gcc-mingw-3.4.5\release\link-static\libboost_regex-mgw34-1_41.lib
так как компилятор у нас mingw, переименовываем в libboost_regex.a и [...]]]></description>
			<content:encoded><![CDATA[<p>Установка и использование Boost.Regex</p>
<p><span id="more-47"></span></p>
<p><strong>1</strong> качаем Boost отсюда http://www.boost.org/users/download/<br />
<strong>2</strong> распаковываем и запускаем bootstrap.bat, будет создан bjam.exe<br />
<strong>3</strong> создаем bjam.bat для компиляции, в нем пишем:</p>
<p><em>bjam &#8211;j2 &#8211;build-dir=C:\boost_build toolset=gcc &#8211;build-type=complete stage<br />
pause</em></p>
<p><em>C:\boost_build</em>  &#8211; путь к папке, куда будет компилится boost</p>
<p><strong>4</strong> после длительной компиляции получаем скомпилированные библиотеки в <em>C:\boost_build\boost\bin.v2\libs\</em></p>
<p>для regex это</p>
<p><em>regex\build\gcc-mingw-3.4.5\release\link-static\libboost_regex-mgw34-1_41.lib</em></p>
<p>так как компилятор у нас mingw, переименовываем в libboost_regex.a и копируем в <em>C:\mingw\lib</em></p>
<p><strong>5</strong> Папка boost из исходников boost содержит все необходимые заголовочные файлы. Закидываем эту папку в <em>mingw/include</em>, так чтобы <em>regex.hpp</em> оказался в папке <em>mingw/include/boost</em></p>
<p><strong>6</strong> Настройка Eclipse<br />
Открываем свойства проекта <em>Project->Properties</em></p>
<p>Вкладка <em>C/C++ Build -> Settings</em></p>
<p>На вкладке Tool Settings:<br />
<em>MinGW C++ Linker->Libraries</em></p>
<p>добавляем библиотеку boost_regex</p>
<p><strong>7</strong> Собираем пример</p>
<pre lang="cpp" line="1" colla="-">
#include &lt;iostream&gt;
using namespace std;
#include &lt;boost/regex.hpp&gt;

int main()
{

	string xStr("name=\"test\" value=\"100\"");
	boost::regex xRegEx("name=\"test\" value=\"([0-9]*)\"");
	boost::smatch xResults;

	boost::regex_match(xStr,  xResults, xRegEx);

	cout << "value: " << xResults[1] << endl;

	return 0;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.lsdeex.ru/archives/47/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>работа с AntiCaptcha (ac-service.info) в С++</title>
		<link>http://www.lsdeex.ru/archives/10</link>
		<comments>http://www.lsdeex.ru/archives/10#comments</comments>
		<pubDate>Sun, 19 Jul 2009 08:51:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[c++]]></category>

		<guid isPermaLink="false">http://www.lsdeex.ru/?p=10</guid>
		<description><![CDATA[Пример, выложенный на сайте самого сервиса &#8211; не компилируется minGW, поэтому я его пофиксил и немного доработал &#8211; результаты разгаданной капчи теперь не пролетают на экране, а сохраняются в файл.

Мои исправления:
- функция sleep(10) &#8211; должна быть записана с большой буквы и в микросекундах &#8211; Sleep(10000)  &#8211; теперь скрипт будет спать 10 секунд.
- исправлен адрес сервиса, [...]]]></description>
			<content:encoded><![CDATA[<p>Пример, выложенный на сайте самого сервиса &#8211; не компилируется minGW, поэтому я его пофиксил и немного доработал &#8211; результаты разгаданной капчи теперь не пролетают на экране, а сохраняются в файл.</p>
<p><span id="more-10"></span></p>
<p>Мои исправления:</p>
<p>- функция sleep(10) &#8211; должна быть записана с большой буквы и в микросекундах &#8211; Sleep(10000)  &#8211; теперь скрипт будет спать 10 секунд.</p>
<p>- исправлен адрес сервиса, который везде был проставлен как anticaptcha.com &#8211; на ac-service.info</p>
<p>- добавлена функция file_put_contents(файл, содержимое) (о, пхп!). Функция сохраняет ответ антикапчи в указанный файл.</p>
<p>Вот код:</p>
          
<div class="codebox">
    <div class="the_code" style="display: none" id="p102">
        <div class="code cpp" id="p10code2">
<ol class="cpp cpp" style="font-family:monospace;"><li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="coMULTI">/*</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">Anti-captcha.com C++ w/CURL usage example</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">1. replace variable &quot;ackey&quot; with your own</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">2. replace variable &quot;captchafile&quot; with your own captcha filename</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">3. compile with g++ option -lcurl</span></div></li>
<li class="li1"><div class="de1"><span class="coMULTI">*/</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;stdio.h&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;iostream&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co1">//#include &lt;fcntl.h&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co1">//#include &lt;sys/stat.h&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co1">//#include &lt;unistd.h&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;string&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;fstream&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;curl/curl.h&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">using</span> <span class="kw2">namespace</span> std;</div></li>
<li class="li1"><div class="de1">string contents,tempstr;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">string ackey<span class="sy1">=</span><span class="st0">&quot;4ba8e36d76d571c4f37f786509834e19&quot;</span>;</div></li>
<li class="li1"><div class="de1">string captchafile<span class="sy1">=</span><span class="st0">&quot;captcha.jpg&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">size_t</span> handle_data<span class="br0">&#40;</span><span class="kw4">void</span> <span class="sy2">*</span>ptr, <span class="kw4">size_t</span> size, <span class="kw4">size_t</span> nmemb, <span class="kw4">void</span> <span class="sy2">*</span>stream<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">bool</span> myCheckIn<span class="br0">&#40;</span>string<span class="sy3">&amp;</span> HTML, <span class="kw4">int</span> <span class="sy2">*</span>pos, string str, <span class="kw4">bool</span> reg<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> strpos<span class="br0">&#40;</span>string<span class="sy3">&amp;</span> haystack, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span> needle<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">string substr<span class="br0">&#40;</span>string<span class="sy3">&amp;</span> str, <span class="kw4">int</span> pos, <span class="kw4">int</span> offset<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">void</span> file_put_contents<span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy2">*</span>name, string res<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> captcha_id<span class="sy1">=</span><span class="nu19">0</span>;</div></li>
<li class="li1"><div class="de1">CURL <span class="sy2">*</span>hCurl <span class="sy1">=</span> <span class="kw2">NULL</span>;</div></li>
<li class="li1"><div class="de1">CURLcode cc;</div></li>
<li class="li1"><div class="de1"><span class="kw4">char</span> error_buffer<span class="br0">&#91;</span><span class="nu0">1024</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">char</span> tmp_char<span class="br0">&#91;</span><span class="nu0">256</span><span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span><span class="sy3">!</span>hCurl<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; cc <span class="sy1">=</span> curl_global_init<span class="br0">&#40;</span>CURL_GLOBAL_ALL<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; hCurl <span class="sy1">=</span> curl_easy_init<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">if</span> <span class="br0">&#40;</span>hCurl<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">char</span> <span class="sy2">*</span>url <span class="sy1">=</span> <span class="st0">&quot;http://ac-service.info/in.php&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">struct</span> curl_httppost <span class="sy2">*</span>post<span class="sy1">=</span><span class="kw2">NULL</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">struct</span> curl_httppost <span class="sy2">*</span>last<span class="sy1">=</span><span class="kw2">NULL</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>hCurl, CURLOPT_WRITEFUNCTION, handle_data<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>hCurl, CURLOPT_URL, url<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>hCurl, CURLOPT_ERRORBUFFER, <span class="sy3">&amp;</span>error_buffer<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_formadd<span class="br0">&#40;</span><span class="sy3">&amp;</span>post, <span class="sy3">&amp;</span>last, &nbsp; CURLFORM_COPYNAME, <span class="st0">&quot;method&quot;</span>, &nbsp; CURLFORM_COPYCONTENTS, <span class="st0">&quot;post&quot;</span>, CURLFORM_END<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_formadd<span class="br0">&#40;</span><span class="sy3">&amp;</span>post, <span class="sy3">&amp;</span>last, &nbsp; CURLFORM_COPYNAME, <span class="st0">&quot;key&quot;</span>, &nbsp; CURLFORM_COPYCONTENTS, ackey.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, CURLFORM_END<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_formadd<span class="br0">&#40;</span><span class="sy3">&amp;</span>post, <span class="sy3">&amp;</span>last, &nbsp; CURLFORM_COPYNAME, <span class="st0">&quot;file&quot;</span>, &nbsp; CURLFORM_FILE, captchafile.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, CURLFORM_CONTENTTYPE, <span class="st0">&quot;image/jpeg&quot;</span>, CURLFORM_END<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//setting form fields to handler</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>hCurl, CURLOPT_HTTPPOST, post<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//posting</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_perform<span class="br0">&#40;</span>hCurl<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//cleaning</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_formfree<span class="br0">&#40;</span>post<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_cleanup<span class="br0">&#40;</span>hCurl<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_global_cleanup<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//checking for error</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>strpos<span class="br0">&#40;</span>contents,<span class="st0">&quot;ERROR&quot;</span><span class="br0">&#41;</span><span class="sy3">!</span><span class="sy1">=</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;found error: %s<span class="es0">\n</span>&quot;</span>,contents.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//getting id</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; tempstr<span class="sy1">=</span>substr<span class="br0">&#40;</span>contents,<span class="nu0">3</span>,<span class="nu0">10</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; captcha_id<span class="sy1">=</span><span class="kw3">atoi</span><span class="br0">&#40;</span>tempstr.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;captcha id: %d<span class="es0">\n</span>&quot;</span>,captcha_id<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; contents<span class="sy1">=</span><span class="st0">&quot;&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//creating new url</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">sprintf</span><span class="br0">&#40;</span>tmp_char,<span class="st0">&quot;http://ac-service.info/res.php?key=%s&amp;action=get&amp;id=%d&quot;</span>,ackey.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span>,captcha_id<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="co1">//sleeping for 10-second periods and pinging anti-captcha</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;sleeping for 10 seconds....<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; Sleep<span class="br0">&#40;</span><span class="nu0">10000</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;checking for captcha result...&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; hCurl <span class="sy1">=</span> curl_easy_init<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>hCurl<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>hCurl, CURLOPT_WRITEFUNCTION, handle_data<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>hCurl, CURLOPT_URL, tmp_char<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>hCurl, CURLOPT_ERRORBUFFER, <span class="sy3">&amp;</span>error_buffer<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curl_easy_perform<span class="br0">&#40;</span>hCurl<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curl_easy_cleanup<span class="br0">&#40;</span>hCurl<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; curl_global_cleanup<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>strpos<span class="br0">&#40;</span>contents,<span class="st0">&quot;NOT_READY&quot;</span><span class="br0">&#41;</span><span class="sy3">!</span><span class="sy1">=</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;captcha is not ready yet<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>strpos<span class="br0">&#40;</span>contents,<span class="st0">&quot;ERROR&quot;</span><span class="br0">&#41;</span><span class="sy3">!</span><span class="sy1">=</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//found error</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;error: %s<span class="es0">\n</span>&quot;</span>,contents.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>strpos<span class="br0">&#40;</span>contents,<span class="st0">&quot;OK&quot;</span><span class="br0">&#41;</span><span class="sy3">!</span><span class="sy1">=</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">//captcha is ready</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tempstr<span class="sy1">=</span>substr<span class="br0">&#40;</span>contents,<span class="nu0">3</span>,<span class="nu0">30</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;captcha result: %s<span class="es0">\n</span>&quot;</span>,tempstr.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string res <span class="sy1">=</span> <span class="st0">&quot;captcha result: &quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; res.<span class="me1">append</span><span class="br0">&#40;</span>tempstr.<span class="me1">c_str</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; file_put_contents<span class="br0">&#40;</span><span class="st0">&quot;test.txt&quot;</span>, res<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">break</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; contents<span class="sy1">=</span><span class="st0">&quot;&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;CURL error<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>; <span class="kw3">exit</span><span class="br0">&#40;</span><span class="nu0">1</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;CURL error<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;<span class="kw3">printf</span><span class="br0">&#40;</span><span class="st0">&quot;done<span class="es0">\n</span>&quot;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">size_t</span> handle_data<span class="br0">&#40;</span><span class="kw4">void</span> <span class="sy2">*</span>ptr, <span class="kw4">size_t</span> size, <span class="kw4">size_t</span> nmemb, <span class="kw4">void</span> <span class="sy2">*</span>stream<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">int</span> numbytes <span class="sy1">=</span> size<span class="sy2">*</span>nmemb;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">char</span> lastchar <span class="sy1">=</span> <span class="sy2">*</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy2">*</span><span class="br0">&#41;</span> ptr <span class="sy2">+</span> numbytes <span class="sy2">-</span> <span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy2">*</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy2">*</span><span class="br0">&#41;</span> ptr <span class="sy2">+</span> numbytes <span class="sy2">-</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="sy1">=</span> <span class="st0">'<span class="es0">\0</span>'</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; contents.<span class="me1">append</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy2">*</span><span class="br0">&#41;</span>ptr<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; contents.<span class="me1">append</span><span class="br0">&#40;</span><span class="nu0">1</span>,lastchar<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy2">*</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy2">*</span><span class="br0">&#41;</span> ptr <span class="sy2">+</span> numbytes <span class="sy2">-</span> <span class="nu0">1</span><span class="br0">&#41;</span> <span class="sy1">=</span> lastchar;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> size<span class="sy2">*</span>nmemb;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="kw4">bool</span> myCheckIn<span class="br0">&#40;</span>string<span class="sy3">&amp;</span> HTML, <span class="kw4">int</span> <span class="sy2">*</span>pos, string str, <span class="kw4">bool</span> reg<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="kw1">if</span><span class="br0">&#40;</span>HTML.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy1">&lt;</span> <span class="sy2">*</span>pos <span class="sy2">+</span> str.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw2">false</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;<span class="kw1">for</span><span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">int</span> i <span class="sy1">=</span> <span class="nu19">0</span>; i <span class="sy1">&lt;</span> str.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; i<span class="sy2">++</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>str<span class="br0">&#91;</span>i<span class="br0">&#93;</span> <span class="sy3">!</span><span class="sy1">=</span> HTML<span class="br0">&#91;</span>i <span class="sy2">+</span> <span class="sy2">*</span>pos<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="kw2">false</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;<span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;<span class="sy2">*</span>pos <span class="sy2">+</span><span class="sy1">=</span> str.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy2">-</span> <span class="nu0">1</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;<span class="kw1">return</span> <span class="kw2">true</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> strpos<span class="br0">&#40;</span>string<span class="sy3">&amp;</span> haystack, <span class="kw4">const</span> <span class="kw4">char</span> <span class="sy2">*</span> needle<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; string tmp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; tmp<span class="sy1">=</span>needle;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">unsigned</span> <span class="kw4">int</span> hsize <span class="sy1">=</span> haystack.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw4">unsigned</span> <span class="kw4">int</span> i<span class="sy1">=</span><span class="nu19">0</span>;i<span class="sy1">&lt;</span>hsize;i<span class="sy2">++</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>myCheckIn<span class="br0">&#40;</span>haystack, <span class="br0">&#40;</span><span class="kw4">int</span> <span class="sy2">*</span><span class="br0">&#41;</span> <span class="sy3">&amp;</span>i,tmp,<span class="kw2">true</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="kw1">return</span> <span class="br0">&#40;</span>i<span class="sy2">-</span>tmp.<span class="me1">size</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy2">+</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="sy2">-</span><span class="nu0">1</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">string substr<span class="br0">&#40;</span>string<span class="sy3">&amp;</span> str, <span class="kw4">int</span> pos, <span class="kw4">int</span> offset<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">int</span> i;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; string res;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>i<span class="sy1">=</span>pos;i<span class="sy1">&lt;</span><span class="br0">&#40;</span>pos<span class="sy2">+</span>offset<span class="br0">&#41;</span>;i<span class="sy2">++</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; res <span class="sy2">+</span><span class="sy1">=</span> str<span class="br0">&#91;</span>i<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> res;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">void</span> file_put_contents<span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy2">*</span>name, string res<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; ofstream fout<span class="br0">&#40;</span>name<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; fout <span class="sy1">&lt;&lt;</span> res;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; fout.<span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol>
        </div>
    </div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.lsdeex.ru/archives/10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Подключение cURL к связке minGW + Eclipse в Windows</title>
		<link>http://www.lsdeex.ru/archives/3</link>
		<comments>http://www.lsdeex.ru/archives/3#comments</comments>
		<pubDate>Thu, 16 Jul 2009 16:03:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[c++]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.lsdeex.ru/wordpress/?p=3</guid>
		<description><![CDATA[Как подключить и использовать библиотеку cURL в С++?

Скачай библиотеку cURL с официального сайта curl:
http://curl.haxx.se/download.html
Теперь предстоит её скомилировать. Для этого понадобится  mingw32-make.exe
Открой консоль windows (win+r, &#8216;cmd&#8217;)  и иди в директорию с распакованным cURL.
C:\minwg\bin\mingw32-make.exe mingw32
После  этих нехитрых манипуляций получишь два файла в директории lib &#8211; libcurl.a и libcurldll.a
Скопируй их в  C:\minwg\lib
а папку include/curl (которая содержит curl.h) в [...]]]></description>
			<content:encoded><![CDATA[<p>Как подключить и использовать библиотеку cURL в С++?</p>
<p><span id="more-3"></span></p>
<p>Скачай библиотеку cURL с официального сайта curl:</p>
<p>http://curl.haxx.se/download.html</p>
<p>Теперь предстоит её скомилировать. Для этого понадобится  mingw32-make.exe</p>
<p>Открой консоль windows (win+r, &#8216;cmd&#8217;)  и иди в директорию с распакованным cURL.</p>
<pre>C:\minwg\bin\mingw32-make.exe mingw32</pre>
<p>После  этих нехитрых манипуляций получишь два файла в директории lib &#8211; libcurl.a и libcurldll.a</p>
<p>Скопируй их в  C:\minwg\lib</p>
<p>а папку include/curl (которая содержит curl.h) в C:\mingw\include</p>
<p>Осталось настроить Eclipse.</p>
<p>Создай новый проект, открой его свойства Project->Properties</p>
<p>Вкладка C/C++ Build -> Settings</p>
<p>На вкладке Tool Settings: GCC C++ Complier -> Miscellaneous добавь флаг</p>
<pre> -DCURL_STATICLIB</pre>
<p>Чуть ниже, MinGW C++ Linker->Libraries</p>
<p>добавь туда библиотеки (важен порядок в котором они расположены!)<br />
curl<br />
wsock32<br />
wldap32</p>
<p>На этом всё.</p>
<p>Теперь попробуй скомпилировать пример программы, выкачивающей главную страницу Google.ru.</p>
          
<div class="codebox">
    <div class="the_code" style="display: none" id="p34">
        <div class="code cpp" id="p3code4">
<ol class="cpp cpp" style="font-family:monospace;"><li class="li1"><div class="de1"><span class="co2">#include &lt;iostream&gt;</span></div></li>
<li class="li1"><div class="de1"><span class="co2">#include &lt;curl/curl.h&gt;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw2">using</span> <span class="kw2">namespace</span> std;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">static</span> <span class="kw4">char</span> errorBuffer<span class="br0">&#91;</span>CURL_ERROR_SIZE<span class="br0">&#93;</span>;</div></li>
<li class="li1"><div class="de1"><span class="kw4">static</span> string buffer;</div></li>
<li class="li1"><div class="de1"><span class="kw4">static</span> <span class="kw4">int</span> writer<span class="br0">&#40;</span><span class="kw4">char</span> <span class="sy2">*</span>data, <span class="kw4">size_t</span> size, <span class="kw4">size_t</span> nmemb, std<span class="sy4">::</span><span class="me2">string</span> <span class="sy2">*</span>buffer<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw4">int</span> result <span class="sy1">=</span> <span class="nu19">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>buffer <span class="sy3">!</span><span class="sy1">=</span> <span class="kw2">NULL</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; buffer<span class="sy2">-</span><span class="sy1">&gt;</span>append<span class="br0">&#40;</span>data, size <span class="sy2">*</span> nmemb<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; result <span class="sy1">=</span> size <span class="sy2">*</span> nmemb;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; <span class="kw1">return</span> result;</div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1"><span class="kw4">int</span> main<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw4">char</span> url<span class="br0">&#91;</span><span class="br0">&#93;</span> <span class="sy1">=</span> <span class="st0">&quot;http://google.ru&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">cout</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;Retrieving &quot;</span> <span class="sy1">&lt;&lt;</span> url <span class="sy1">&lt;&lt;</span> endl;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CURL <span class="sy2">*</span>curl;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; CURLcode result;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl <span class="sy1">=</span> curl_easy_init<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy3">!</span>curl<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">cout</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;cant init curl. exit&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu19">0</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>curl, CURLOPT_ERRORBUFFER, errorBuffer<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>curl, CURLOPT_URL, url<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>curl, CURLOPT_HEADER, <span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>curl, CURLOPT_FOLLOWLOCATION, <span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>curl, CURLOPT_NOBODY, <span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>curl, CURLOPT_WRITEFUNCTION, writer<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_setopt<span class="br0">&#40;</span>curl, CURLOPT_WRITEDATA, <span class="sy3">&amp;</span>buffer<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; result <span class="sy1">=</span> curl_easy_perform<span class="br0">&#40;</span>curl<span class="br0">&#41;</span>; <span class="co1">// as curl_exec</span></div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; curl_easy_cleanup<span class="br0">&#40;</span>curl<span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>result <span class="sy1">==</span> CURLE_OK<span class="br0">&#41;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">cout</span> <span class="sy1">&lt;&lt;</span> buffer <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;<span class="es0">\n</span>&quot;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span><span class="br0">&#40;</span><span class="nu19">0</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span></div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">cout</span> <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;Error: [&quot;</span> <span class="sy1">&lt;&lt;</span> result <span class="sy1">&lt;&lt;</span> <span class="st0">&quot;] - &quot;</span> <span class="sy1">&lt;&lt;</span> errorBuffer;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw3">exit</span><span class="br0">&#40;</span><span class="sy2">-</span><span class="nu0">1</span><span class="br0">&#41;</span>;</div></li>
<li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div></li>
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>
</ol>
        </div>
    </div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://www.lsdeex.ru/archives/3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

