Проблема с линковкой в c / c++

Рейтинг: 2Ответов: 1Опубликовано: 03.02.2011

Начинаю учить c++, поэтому проблема может быть совсем глупой, я это даже чувствую. Заключается в следующем. Ставлю DevCpp, качаю libcurl.a, вот исходник файла, звать его "main.c" Режим "plain C".

#include <stdio.h>
#include <curl/curl.h>

int main(void)
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
        res = curl_easy_perform(curl);

        /* always cleanup */ 
        curl_easy_cleanup(curl);
    }
    return 0;
}

При компиляции как из DevCpp, так и из compile.bat

@echo off
mingw32-gcc -I"D:\\_CPP_\\devpaks\\include" -c main.c -o "main.o" -DCURL_STATICLIB
mingw32-g++ main.o -o "pr2.exe" -L"D:\\_CPP_\\Dev-Cpp\\lib" -lcurl -lws2_32 -lwinmm
pause

(были оба gcc, оба g++ и вообще во всех вариантах, код на c++ тоже тестил) выдает следующее:

D:\\_CPP_\\Dev-Cpp\\lib/libcurl.a(content_encoding.o)(.text+0x5d): undefined reference to 'inflateEnd'
[ ... еще 5 с другими переменными ... ]
collect2: ld returned 1 exit status
Для продолжения нажмите любую клавишу . . .

Две ночи гугления дали такой результат: линковка есть, переменная среды PATH в порядке (проверял), библиотека и заголовки с оф сайта. Перезагружался) Пробелов в путях нет. Hello world компилится нормально, но любая подключенная библиотека(poco, boost, clSockets) рушит программу.

Кто-нибудь сталкивался с подобным?

UPD: простите, winXP SP2

Ответы

▲ 4Принят

Судя по тому, что не хватает inflateEnd, это означает, что надо залинковать ещё zlib

PS: то есть это значит, что надо ещё добавить -lz к опциям