crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в QT и cURL
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Гость Дата 23.5.2013, 12:28
  Могу порекомнедовать удобную связку: QtCUrl
Litkevich Yuriy Дата 29.1.2010, 15:05
  NightMan15, смотри Справку по кнопкам и тэгам форума
NightMan15 Дата 29.1.2010, 11:44
  QT Creator + libcurl + multi

Кто-нибудь пытался пример из cUrl собрать в QT Creator. Пробую пример с интерфейсом easy все работает.
Пробую пример с интерфейсом multi не собирается, пишет
undefined reference to `select@20'
это он на это
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);

Что эта за функция (select()) такая?
Раскрывающийся текст
/********main.cpp*******/
/#include <QtCore/QCoreApplication>
/* curl stuff */
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
int main(int argc, char *argv[])
{
   // QCoreApplication a(argc, argv);
    CURL *http_handle;
    CURL *http_handle2;
    CURLM *multi_handle;

    int still_running; /* keep number of running handles */

    http_handle = curl_easy_init();
    http_handle2 = curl_easy_init();

    /* set options */
    curl_easy_setopt(http_handle, CURLOPT_URL, "http://192.168.6.30/");
    curl_easy_setopt(http_handle, CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
    curl_easy_setopt(http_handle, CURLOPT_USERNAME,"admin");
    curl_easy_setopt(http_handle, CURLOPT_PASSWORD,"rootpasswd");

    /* set options */
    curl_easy_setopt(http_handle2, CURLOPT_URL, "http://192.168.6.29/");
    curl_easy_setopt(http_handle2, CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
    curl_easy_setopt(http_handle2, CURLOPT_USERNAME,"admin");
    curl_easy_setopt(http_handle2, CURLOPT_PASSWORD,"rootpasswd");

    /* init a multi stack */
    multi_handle = curl_multi_init();

    /* add the individual transfers */
    curl_multi_add_handle(multi_handle, http_handle);
    curl_multi_add_handle(multi_handle, http_handle2);

    /* we start some action by calling perform right away */
    while(CURLM_CALL_MULTI_PERFORM ==
          curl_multi_perform(multi_handle, &still_running));

    while(still_running) {
      struct timeval timeout;
      int rc; /* select() return code */

      fd_set fdread;
      fd_set fdwrite;
      fd_set fdexcep;
      int maxfd;

      FD_ZERO(&fdread);
      FD_ZERO(&fdwrite);
      FD_ZERO(&fdexcep);

      /* set a suitable timeout to play around with */
      timeout.tv_sec = 1;
      timeout.tv_usec = 0;

      /* get file descriptors from the transfers */
      curl_multi_fdset(multi_handle, &fdread, &fdwrite, &fdexcep, &maxfd);

      /* In a real-world program you OF COURSE check the return code of the
         function calls, *and* you make sure that maxfd is bigger than -1 so
         that the call to select() below makes sense! */

      rc = ::select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);

      switch(rc) {
      case -1:
        /* select error */
        break;
      case 0:
      default:
        /* timeout or readable/writable sockets */
        while(CURLM_CALL_MULTI_PERFORM ==
              curl_multi_perform(multi_handle, &still_running));
        break;
      }
    }

    curl_multi_cleanup(multi_handle);

    curl_easy_cleanup(http_handle);
    curl_easy_cleanup(http_handle2);
    getchar();

  //  return a.exec();
}

Раскрывающийся текст
#-------------------------------------------------
#
# Project created by QtCreator 2010-01-29T09:44:30
#
#-------------------------------------------------

QT       -= gui
TARGET = curlmultiDemo
CONFIG   += console
CONFIG   -= app_bundle
INCLUDEPATH += $$quote(D:\Programms\Projects\cUrl\curl-7.19.7\include)
LIBS += $$quote(D:\Programms\Projects\cUrl\curl-7.19.7\lib\libcurldll.a)
LIBS += $$quote(D:\Programms\Projects\cUrl\curl-7.19.7\lib\libcurl.a)
TEMPLATE = app
SOURCES += main.cpp


Цитата(NightMan15 @ 29.1.2010, 12:27) *
QT Creator + libcurl + multi
undefined reference to `select@20'
это он на это
rc = select(maxfd+1, &fdread, &fdwrite, &fdexcep, &timeout);


Надо добавить в проект строку
LIBS += $$quote(D:\Programms\QT\2010.01\mingw\lib\libws2_32.a)

Взято тут
deex Дата 10.1.2010, 14:16
  спасибо большое!
запуск через консоль помог определить что скомпиленной проге не хватает рядом libcurldll.dll
закинул все dll-ки и заработало
Litkevich Yuriy Дата 10.1.2010, 11:05
 
Цитата(deex @ 10.1.2010, 14:01) *
компилится, но программа при запуске сразу завершается

Запускается C:\cpp\gui\qtcurl\debug\qtcurl.exe...
C:\cpp\gui\qtcurl\debug\qtcurl.exe завершился с кодом -1073741515
в режиме отладки собери и запусти из командной строки, Qt обычно пишет причину аварийного завершения в поток ошибок
deex Дата 10.1.2010, 11:01
 
Цитата(Авварон @ 6.1.2010, 13:49) *
могу ошибаться, но в 16м сообщении вроде написан ответ... скопировать библиотеки куда-нибудь, в .pro файл прописать:
LIBS += -Lпуть_куда_скопировал -lcurl -lcurldll


не помогает
компилится, но программа при запуске сразу завершается

Запускается C:\cpp\gui\qtcurl\debug\qtcurl.exe...
C:\cpp\gui\qtcurl\debug\qtcurl.exe завершился с кодом -1073741515
Авварон Дата 6.1.2010, 10:49
  могу ошибаться, но в 16м сообщении вроде написан ответ... скопировать библиотеки куда-нибудь, в .pro файл прописать:
LIBS += -Lпуть_куда_скопировал -lcurl -lcurldll
eldar85 Дата 4.1.2010, 12:48
  парни кто присодинял Курл либо к Qt creatorу либо к Qt+eclipse+libcurl, поделитесь опытом. если можно пошагово объясните что и куда воткнуть и прописать.
eldar85 Дата 3.1.2010, 22:19
  Здравствуйте... подскажите пожалуйста что я делаю не так.

я использовал libcurl и boost в Эклипсе в консоле все работало отлично, соединял библиотеки libcurl, boost как тут http://www.lsdeex.ru/archives/3 .Каждый раз когда начинаешь новый проект, нужно Курл вот так присоединять:

Создай новый проект, открой его свойства Project->Properties

Вкладка C/C++ Build -> Settings

На вкладке Tool Settings: GCC C++ Complier -> Miscellaneous добавь флаг
-DCURL_STATICLIB

Чуть ниже, MinGW C++ Linker->Libraries

добавь туда библиотеки (важен порядок в котором они расположены!)
curl
wsock32
wldap32
//================================================== ============
а теперь еще к эклипсу присоединил Qt как тут - http://habrahabr.ru/blogs/development/30636/
тоже работает, окна собираются.

Но если я хочу собрать окно на Qt чтобы оно использовало libcurl то Курл не получается присоединить потому что в Project->Properties нету вкладок C/C++ Build -> Settings.
Пробывал прописывать в файле .pro LIBS += -LC:/MinGW/lib -libcurl -libcurldll но тоже не работает. не знаю что еще можно сделать...
wander86 Дата 5.10.2009, 23:40
  Законнектился, просто в .pro ввел:

LIBS += -LD:/qtdev/curl/lib -lcurl

а нада было:

LIBS += -LD:/qtdev/curl/lib -lcurl -lcurldll

(-: библиотеки поскидывал, а подключить их... (-:
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 23:14