Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как подключить cURL в Builder 2010, Unresolved external '_curl_global_init'  
V
    Опции темы
ZVano
Дата 21.2.2011, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



1. Скачал  с http://curl.haxx.se/download.html пакет "libcurl-7.19.3-win32-ssl-msvc" с исходниками, header и lib -файлами.
2. Распаковал в папку z:\libs\cURL\libcurl-7.19.3-win32-ssl-msvc\
3. Создал в Builder 2010 проект оконного приложения.
4 Прописал в опциях
4.1
Include Path=Z:\libs\cURL\libcurl-7.19.3-win32-ssl-msvc\include
Тут лежат header-файлы

Код

include
│   Makefile.am
│   Makefile.in
│   README
│   
└───curl
        curl.h
        curlbuild.h
        curlbuild.h.in
        curlrules.h
        curlver.h
        easy.h
        Makefile.am
        Makefile.in
        mprintf.h
        multi.h
        stdcheaders.h
        typecheck-gcc.h
        types.h



4.2
Libraty Path = Z:\libs\cURL\libcurl-7.19.3-win32-ssl-msvc\lib\Debug

Код

lib
│   
├───Debug
│       curllib.dll
│       curllib.lib
│       curllib_static.lib
│       
└───Release
        curllib.dll
        curllib.lib
        curllib_static.lib



5. Использую библиотеку из модуля формы
Код

#include <curl\curl.h>
#include <curl\types.h>
#include <curl\easy.h>

void __fastcall TfrmMain::BitBtn1Click(TObject *Sender) {
    CURL *curl;
    CURLcode res;

    struct FtpFile ftpfile = {
        "curl.tar.gz", // name to store the file as if succesful
        NULL
    };

    curl_global_init(CURL_GLOBAL_DEFAULT);

    curl = curl_easy_init();
    if (curl) {
        // You better replace the URL with one that works!
        curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.example.com/pub/www/utilities/curl/curl-7.9.2.tar.gz");
        // Define our callback to get called when there's data to be written
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_fwrite);
        // Set a pointer to our struct to pass to the callback
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &ftpfile);

        // Switch on full protocol/debug output
        curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);

        res = curl_easy_perform(curl);

        // always cleanup
        curl_easy_cleanup(curl);

        if (CURLE_OK != res) {
            // we failed
            fprintf(stderr, "curl told us %d\n", res);
        }
    }

    if (ftpfile.stream) {
        // close the local file
        fclose(ftpfile.stream);
    }

    curl_global_cleanup();
}



6. При попытке компиляции ругается матом
Код

[ILINK32 Error] Error: Unresolved external '_curl_global_init' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_init' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_setopt' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_perform' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_cleanup' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_global_cleanup' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unable to perform link



7. Добавил в проект файл "Z:\LIBS\CURL\LIBCURL-7.19.3-WIN32-SSL-MSVC\LIB\DEBUG\CURLLIB.LIB"
Ругается теперь так.
[ILINK32 Error] Error: 'Z:\LIBS\CURL\LIBCURL-7.19.3-WIN32-SSL-MSVC\LIB\DEBUG\CURLLIB.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

8. Сформировал утилитой Borland'а "implib.exe" из "curllib.dll"файл "curllib.lib"
Команда "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\implib.exe" curllib.lib curllib.dll

и подложил его вместо заинклудженого в проекте

При попытке компиляции снова ошибки:
Код

[ILINK32 Error] Error: Unresolved external '_curl_global_init' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_init' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_setopt' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_perform' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_easy_cleanup' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unresolved external '_curl_global_cleanup' referenced from Z:\SAMPLES\CURL\SRC\TMP\UFRMMAIN.OBJ
[ILINK32 Error] Error: Unable to perform link



Смутно подозреваю, что проблемма в формате объявления импортируемых функций.
Гуру, отзовитесь плиз.

В чем проблемма, как побороть?



УРРРАААА!!!! Поборол.
Сконвертировал lib-файл при помощи утилиты "c:\Program Files\Embarcadero\RAD Studio\7.0\bin\coff2omf.exe"
coff2omf curllib.lib curllib.OMF.lib
Получившийся "curllib.OMF.lib" подкинул вместо "z:\libs\cURL\libcurl-7.19.3-win32-ssl-msvc\lib\Debug\curllib.lib"

Компилится без ошибок.
Грызем гранит дальше.


Готовую lib приаттачил к сообщению.

Это сообщение отредактировал(а) ZVano - 12.3.2011, 18:47

Присоединённый файл ( Кол-во скачиваний: 85 )
Присоединённый файл  curllib.lib 5,50 Kb


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
ZVano
Дата 21.2.2011, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добавляю рабочий проект CodeGear 2010  с примером загрузки файла с FTP при помощи библиотеки cURL.
Все включено в проект просто открываете "prj-gr-cURL.groupproj", компилите и запускаете.
exe ляжет в "out\" закачаный файл по-умолчанию в "swap\".

Надеюсь, кому то это сэкономит время и сбережет нервы.

Присоединённый файл ( Кол-во скачиваний: 69 )
Присоединённый файл  cURLExamples.zip 319,04 Kb


--------------------
НЕ ФЛУДИМ. Пользуемся кнопками "+" или "-" для выражения своего отношения к теме или сообщению.
Гуглим "Как правильно задавать вопросы"
PM MAIL Skype   Вверх
yuhala
Дата 23.3.2011, 10:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Подключить libcurl можно и проще. Он поставляется с готовым make-файлом для builder - Makefile.b32, в котором надо поправить BCCDIR.
Затем: make -f Makefile.b32 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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