Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> microhttpd и MinGW 
:(
    Опции темы
EnergoHokum
Дата 13.8.2008, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Пытаюсь подружить их друг с другом. microhttpd захотел ещё и plibc, ладно, нашёл, поставил. Пример простейший с сайта MHD компилируется:

Код

#include <microhttpd.h>
#include <cstdio>
#include <cstdlib>
#include <cstring>
//-------------------------------------------------------------------------
/*
    mingw32-g++ -Wall -mthreads -DMINGW -DWINDOWS ./main.cpp -o ./main -L"e:/MinGW/lib/" -lmicrohttpd -lplibc
*/
//-------------------------------------------------------------------------
#define PAGE "<html><head><title>libmicrohttpd demo</title>"    \
    "</head><body>libmicrohttpd demo</body></html>"
//-------------------------------------------------------------------------
static int ahc_echo(void* cls,                            \
                struct MHD_Connection* connection,    \
                const char* url,                    \
                const char* method,                    \
                const char* version,                    \
                const char* upload_data,            \
                unsigned int* upload_data_size,            \
                void** ptr                            \
                )
{
    static int dummy;
    const char* page=(char*)cls;
    struct MHD_Response* response;
    int ret;
    if(strcmp(method,"GET"))    { printf("MHD_NO\n"); return MHD_NO; }
    if(&dummy != *ptr)        { *ptr=&dummy; printf("MHD_YES\n"); return MHD_YES; }
    *ptr=NULL;
    response=MHD_create_response_from_data(strlen(page),    \
                                         (void*)page,        \
                                         MHD_NO,MHD_NO    \
                                         );
    ret=MHD_queue_response(connection,MHD_HTTP_OK,response);
    MHD_destroy_response(response);
    return ret;
    return 0;
}
//-------------------------------------------------------------------------
int main(int argc,char** argv)
{
    printf("Test\n");
    struct MHD_Daemon* d;
    if(argc != 3) { printf("%s PORT SECOND_TO_RUN\n",argv[0]); return 1; }
    unsigned int port;
    sscanf(argv[1],"%i",&port);
    d=MHD_start_daemon(MHD_USE_DEBUG | MHD_USE_THREAD_PER_CONNECTION,    \
                         port,                                                    \
                         NULL,                                                    \
                         NULL,                                                    \
                         &ahc_echo,                                            \
                         (void*)PAGE,                                        \
                         MHD_OPTION_END                                    \
                         );
    if(d == NULL) { printf("Error start \'MHD_daemon\'\n"); return 1; }
    int second_to_sleep;
    sscanf(argv[2],"%i",&second_to_sleep);
    sleep(second_to_sleep);
    MHD_stop_daemon(d);
    return 0;
}


Но при запуске тихо умирает, не выводится в консоль даже первый printf. Если закомментировать все функции MHD, тогда работать начинает. Что ему не хватает в этой жизни? Сталкивался-ли кто с подобным поведением microhttpd?
PM MAIL ICQ   Вверх
EnergoHokum
Дата 13.8.2008, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 600
Регистрация: 10.11.2006
Где: Россия, Ставропол ь

Репутация: нет
Всего: 6



Версия для Windows была динамически скомпонована с DLL-ками, и требовалось установить драйвер для pthreads. Всё скачал, всё поставил, теперь не желает запускать MHD_daemon. Буду разбираться дальше...
PM MAIL ICQ   Вверх
ПавелБлудов
Дата 28.11.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



А кто WSAStartup вызывать будет? Сама libmicrohttpd такими глупостями не занимается.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0405 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.