ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Static library CURL?
  #1  
Старый 21.10.2009, 10:07
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию Static library CURL?

Как можно прилепить CURL в прогамме, чтоб все было в одном файле, без надобности таскать libcurl.dll
Реально ли это?

Я скачал исходнички CURL, собрал с помощью Dev-C++ mingw32
На выходе получились:
libcurl.a 298 КБ
libcurl.dll 207 КБ
libcurldll.a 35,8 КБ
Если собирать прогу с помощью libcurldll.a, то все отлично компилится, прога получается 6 Кб, но требует наличия libcurl.dll
А вот как собрать с помощью libcurl.a ?
Пофиг что прога больше получится, это не критично.
Нашел в инете про ключик -DCURL_STATICLIB, но незнаю как и где его применить

Джоин EXE+libcurl.dll не предлагать, охота все по-грамотному сделать
 
Ответить с цитированием

  #2  
Старый 21.10.2009, 10:12
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме:
432613

Репутация: 80
По умолчанию

1. LoadLibrary('libcurl.dll');
DLL, положить в папку с прогой
2. Сделать импорт необходимых функций из libcurl.dll, статически или динамически
 
Ответить с цитированием

  #3  
Старый 21.10.2009, 10:18
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

2 вопрос:
Dev-cpp 4.9.9.2 вставляет в каждый экзешник текст:
Код:
-LIBGCCW32-EH-2-SJLJ-GTHR-MINGW32   w32_sharedptr->size == sizeof(W32_EH_SHARED) %s:%u: failed assertion `%s'
  ../../gcc/gcc/config/i386/w32-shared-ptr.c  GetAtomNameA (atom, s, sizeof(s)) !=
Видимо баг в бета-версии. Как от этого избавиться?

Последний раз редактировалось ZagZag; 21.10.2009 в 10:21..
 
Ответить с цитированием

  #4  
Старый 21.10.2009, 10:20
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

1. LoadLibrary('libcurl.dll');
Не катит. Я же как раз спрашиваю как избавиться от необходимости libcurl.dll
2. Сделать импорт необходимых функций из libcurl.dll, статически или динамически
Динамически - не интересует
Статически - не умею, объясни подробнее, если не сложно
 
Ответить с цитированием

  #5  
Старый 21.10.2009, 10:34
flacs
Познающий
Регистрация: 28.01.2009
Сообщений: 90
Провел на форуме:
432613

Репутация: 80
По умолчанию

Цитата:
Не катит. Я же как раз спрашиваю как избавиться от необходимости libcurl.dll
перенести весь функционал из libcurl.dll в свою прогу, в отдельный юнит
Цитата:
Статически - не умею, объясни подробнее, если не сложно
Delphi: function <имя функции>(<параметры>): integer; stdcall; external '<имя DLL>' name 'Имя функции в DLL';
C++: extern "C" __declspec(dllimport)double AddNumbers(double a, double b);

Но, как я понял, тебя это не интересует, ибо ты хочешь избавиться от этой либы
 
Ответить с цитированием

  #6  
Старый 21.10.2009, 10:42
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

Чтобы перенести весь функционал из libcurl.dll в свою прогу, нужно собрать прогу со статической библиотекой curl. При сборке curl из исходников генерится файл libcurl.a, размер которого даже немного превышает libcurl.dll. Интуиция подсказывает что в нем содержится весь функционал. Но вот как его подключить к проекту, я не знаю.
Если в линкере поменять libcurldll.a на libcurl.a, то выдается куча ошибок что функции для curl не определены
 
Ответить с цитированием

  #7  
Старый 21.10.2009, 11:32
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

Вот нашел, кажется то что нужно.
http://lenkite.blogspot.com/2007/11/quickstart-libcurl-and-mingw-plain-http.html

Но у меня не пашет, выдает кучу ошибок
Z:\PROJECT\curl-7.19.6\docs\examples>gcc -DCURL_STATICLIB -I ..\..\include simple.c ..\..\lib\libcurl.a -lws2_32 -lwinmm -o simple
..\..\lib\libcurl.a(ldap.o)(.text+0x29b): undefined reference to `_imp__ldap_set_optionA'
..\..\lib\libcurl.a(ldap.o)(.text+0x2be): undefined reference to `_imp__ldap_initA'
..\..\lib\libcurl.a(ldap.o)(.text+0x2e2): undefined reference to `_imp__ldap_set_optionA'
..\..\lib\libcurl.a(ldap.o)(.text+0x31e): undefined reference to `_imp__ldap_simple_bind_sA'
..\..\lib\libcurl.a(ldap.o)(.text+0x37d): undefined reference to `_imp__ldap_search_sA'
..\..\lib\libcurl.a(ldap.o)(.text+0x3b0): undefined reference to `_imp__ldap_first_entry'
..\..\lib\libcurl.a(ldap.o)(.text+0x3e4): undefined reference to `_imp__ldap_get_dnA'
..\..\lib\libcurl.a(ldap.o)(.text+0x45f): undefined reference to `_imp__ldap_first_attributeA'
..\..\lib\libcurl.a(ldap.o)(.text+0x486): undefined reference to `_imp__ldap_get_values_lenA'
..\..\lib\libcurl.a(ldap.o)(.text+0x5f8): undefined reference to `_imp__ldap_value_free_len'
..\..\lib\libcurl.a(ldap.o)(.text+0x62a): undefined reference to `_imp__ldap_memfreeA'
..\..\lib\libcurl.a(ldap.o)(.text+0x644): undefined reference to `_imp__ldap_next_attributeA'
..\..\lib\libcurl.a(ldap.o)(.text+0x65b): undefined reference to `_imp__ldap_memfreeA'
..\..\lib\libcurl.a(ldap.o)(.text+0x679): undefined reference to `_imp__ldap_next_entry'
..\..\lib\libcurl.a(ldap.o)(.text+0x68d): undefined reference to `_imp__ldap_err2stringA'
..\..\lib\libcurl.a(ldap.o)(.text+0x6db): undefined reference to `_imp__ldap_unbind_s'
..\..\lib\libcurl.a(ldap.o)(.text+0x741): undefined reference to `_imp__ldap_msgfree'
..\..\lib\libcurl.a(ldap.o)(.text+0x777): undefined reference to `_imp__ldap_err2stringA'
..\..\lib\libcurl.a(ldap.o)(.text+0x7bb): undefined reference to `_imp__ldap_set_optionA'
..\..\lib\libcurl.a(ldap.o)(.text+0x7ee): undefined reference to `_imp__ldap_simple_bind_sA'
..\..\lib\libcurl.a(ldap.o)(.text+0xa30): undefined reference to `_imp__ber_free'
..\..\lib\libcurl.a(ldap.o)(.text+0xa41): undefined reference to `_imp__ldap_err2stringA'
collect2: ld returned 1 exit status
 
Ответить с цитированием

  #8  
Старый 21.10.2009, 11:41
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

Уря! Как всегда - нашел решение сам =D
http://article.gmane.org/gmane.comp.gnu.octave.maintainers/9640
Надо было добавить еще ключик -lwldap32
В итоге:
gcc -DCURL_STATICLIB -I ..\..\include simple.c ..\..\lib\libcurl.a -lws2_32 -lwinmm -lwldap32 -o simple
Создает прогу размером 260 Кб, которая не нуждается в libcurl.dll
 
Ответить с цитированием

  #9  
Старый 21.10.2009, 12:37
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

Чтобы это дело компилилось в Dev-cpp, надо:
1. Создать C-проект
2. Проект - Параметры проекта (Alt + P) - Вкладка параметры
В поле "компилятор" дописать -DCURL_STATICLIB
В "компоновщик" -lcurl -lws2_32 -lwldap32
И закинуть libcurl.a в папку C:\Dev-Cpp\lib
В проге
#include <curl/curl.h>
ну и дальше как обычно работать с CURL
 
Ответить с цитированием

  #10  
Старый 23.10.2009, 16:57
ZagZag
Участник форума
Регистрация: 22.02.2007
Сообщений: 213
Провел на форуме:
388345

Репутация: 58
По умолчанию

А можно как-нибудь собрать CURL без поддержки многопоточности?
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы и ответы - *NIX Сервера. zythar *nix системы 294 17.06.2010 08:39
Разбираем матрицу: QR-код и чем его «едят» (C#). c0n Difesa С/С++, C#, Delphi, .NET, Asm 17 18.11.2009 19:53
PHP VKontakte Library Y-E-S Покупка, продажа, услуги в Соц. Сетях 8 29.10.2009 21:05
проблема с curl и proxy grizTol PHP, PERL, MySQL, JavaScript 0 24.08.2009 17:14
ВКонтакте "счастливый фермер" ЖенькО Социальные сети 309 22.07.2009 11:35



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ