2010-11-14 15 views
26

So che questa è la programmazione domande, ma io sono solo frustrato cercando di capire quello che sto facendo male ..simboli non risolti durante il collegamento di un programma utilizzando libcurl

che sto usando Visual Studio 2010 e seguite tutte le passaggi qui: http://curl.haxx.se/libcurl/c/visual_studio.pdf

Quando provo a compilare la mia soluzione Continuo a ricevere questo errore:

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 ========== 

Fonte:

// 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

assicurarsi di aver eseguito i passaggi 4.3.2 e 4.3.3 dal pdf collegato. Stai ricevendo un errore di linker, il che significa che non si collega al file 'libcurl.lib'. –

+0

Grazie Jesse. Riformulerò i passaggi più lentamente e capirò perché non è collegato. Grazie per l'aiuto! – Kyle

risposta

2

Sembra che le librerie non vengano collegate correttamente. Assicurarsi che la directory della libreria sia impostata per includere il percorso completo della dll libcurl. Assicurati anche che questa libreria sia effettivamente aggiunta al tuo progetto.

+2

È necessario includere libcurl.lib, curllib.lib –

76

Sto usando la versione statica di libcurl, e collegare il mio programma contro di essa correttamente, ho dovuto aggiungere definizione:

CURL_STATICLIB

per costruire la configurazione del mio progetto.

+13

Questo è probabilmente uno dei problemi più comuni: se si utilizza libcurl come libreria STATIC è necessario definire CURL_STATICLIB non solo nel progetto curl, ma anche nel progetto in cui si voglio usarlo. – PeterK

+0

Un altro punto interessante che ho appena incontrato: è possibile definirlo nel progetto principale e dimenticare di menzionare in un altro vcproj che si sta utilizzando. –

+3

grazie mille. vai alle impostazioni del progetto vC++ | C++ | preprocessore e aggiungere il CURL_STATICLIB alle definizioni del preprocessore e funziona –

3

Mi sono imbattuto in un problema simile - ho scoperto che stavo riferendo alla posizione 64-bit di libcurl.lib. Modificata la directory di collegamento nella posizione a 32 bit e il progetto è stato compilato perfettamente.

12

Oltre a definire CURL_STATICLIB, per me è stato anche necessario collegare le seguenti dipendenze (tra cui libcurl.lib o libcurld.lib):

  • Ws2_32.lib
  • Wldap32.lib
+0

Definire 'CURL_STATICLIB' ha salvato il mio bacon! Grazie! – T4cC0re

0

Dopo molte idee e configurazioni, io risolto il problema aggiungendo questo:

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

dove libcurl_a.lib è il nome del file di arricciatura lib e lib è la cartella che lo contiene.

Problemi correlati