crossplatform.ru

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

3 страниц V  < 1 2 3  
Ответить в данную темуНачать новую тему
> QT и cURL
Litkevich Yuriy
  опции профиля:
сообщение 10.1.2010, 11:05
Сообщение #21


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(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, 14:16
Сообщение #22


Студент
*

Группа: Участник
Сообщений: 45
Регистрация: 12.3.2009
Пользователь №: 608

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо большое!
запуск через консоль помог определить что скомпиленной проге не хватает рядом libcurldll.dll
закинул все dll-ки и заработало
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NightMan15
  опции профиля:
сообщение 29.1.2010, 11:44
Сообщение #23


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 29.12.2009
Пользователь №: 1345

Спасибо сказали: 0 раз(а)




Репутация:   0  


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)

Взято тут
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.1.2010, 15:05
Сообщение #24


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


NightMan15, смотри Справку по кнопкам и тэгам форума
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_*
сообщение 23.5.2013, 12:28
Сообщение #25





Гости








    


Могу порекомнедовать удобную связку: QtCUrl
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 15:11