2010-11-14 18 views
26

wiem, że to jest programowanie pytania, ale jestem po prostu sfrustrowany próbuje dowiedzieć się, co robię źle ..Nierozwiązane Symbole podczas łączenia programu z użyciem libCurl

Używam Visual Studio 2010 i po wszystkim kroki tutaj: http://curl.haxx.se/libcurl/c/visual_studio.pdf

Kiedy próbuję skompilować moje rozwiązanie ciśgle ten błąd:

1>------ Build started: Project: LibCurl, Configuration: Debug Win32 ------ 
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main 
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main 
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main 
1>LibCurl.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main 
1>C:\Users\Kyle\Documents\Visual Studio 2010\libcurl\VisualStudio\LibCurl\Debug\LibCurl.exe : fatal error LNK1120: 4 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

Źródło:

// LibCurl.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#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://google.com"); 
    res = curl_easy_perform(curl); 

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

Upewnij się, że zrobiłeś kroki 4.3.2 i 4.3.3 z połączonego pliku pdf. Otrzymujesz błąd linkera, co oznacza, że ​​nie łączy się z plikiem 'libcurl.lib'. –

+0

Dzięki Jesse. Powtórzę kroki wolniej i zobaczę, dlaczego nie są połączone. Dzięki za pomoc! – Kyle

Odpowiedz

2

Wygląda na to, że biblioteki nie zostały pomyślnie połączone. Upewnij się, że katalog biblioteki jest ustawiony na pełną ścieżkę do biblioteki libcurl. Upewnij się także, że ta biblioteka jest faktycznie dodana do twojego projektu.

+2

Należy dołączyć libcurl.lib, curllib.lib –

76

używam statyczną wersję libcurl i powiązać swój program przed nim właściwie, musiałem dodać definicję:

CURL_STATICLIB

zbudować konfigurację mojego projektu.

+13

Jest to prawdopodobnie jeden z typowych problemów: jeśli używasz libcurl jako biblioteki STATIC, musisz zdefiniować CURL_STATICLIB nie tylko w projekcie curl, ale także w projekcie, w którym chcesz z niego skorzystać. – PeterK

+0

Kolejny interesujący punkt, który właśnie spotkałem: Możesz zdefiniować go w głównym projekcie i zapomnieć wspomnieć o innym vcproj, którego używasz. –

+3

dziękuję bardzo. przejdź do ustawień projektu vC++ | C++ | preprocesor i dodać CURL_STATICLIB do definicji preprocesora i działa –

3

Wpadłem na podobny problem - odkryłem, że odwoływałem się do 64-bitowej lokalizacji libcurl.lib. Zmieniono katalog łącza do 32-bitowej lokalizacji, a projekt został skompilowany idealnie.

12

Oprócz definiowania CURL_STATICLIB, dla mnie było również konieczne, aby połączyć następujące zależności (w tym libcurl.lib lub libcurld.lib)

  • Ws2_32.lib
  • Wldap32.lib
+0

Definiowanie 'CURL_STATICLIB' uratowało mój bekon! Dzięki! – T4cC0re

0

Po wielu pomysłów i konfiguracjach, ja rozwiązał problem dodając to:

#pragma comment(lib, "lib/libcurl_a.lib")

gdzie libcurl_a.lib to nazwa pliku z lokami i lib jest folderem, który go zawiera.