2009-05-15 13 views
10

Sto provando a creare un'app per console C++ in VS2008 utilizzando la libreria static curlpp. Il codice - che è esempio curlpp 00 - è il seguente:Utilizzo di CurlPP con vs2008

#include "stdafx.h" 


#include <curlpp/curlpp.hpp> 
#include <curlpp/Easy.hpp> 
#include <curlpp/Options.hpp> 


using namespace curlpp::options; 

int main(int, char **) 
{ 
    try 
    { 

    // Our request to be sent. 
    curlpp::Easy myRequest; 

    // Set the URL. 
    myRequest.setOpt<Url>("http://example.com"); 

    // Send request and get a result. 
    // By default the result goes to standard output. 
    myRequest.perform(); 
    } 

    catch(curlpp::RuntimeError & e) 
    { 
    std::cout << e.what() << std::endl; 
    } 

    catch(curlpp::LogicError & e) 
    { 
    std::cout << e.what() << std::endl; 
    } 

    return 0; 
} 

ho scaricato la fonte e il mio percorso di inclusione indicò la fonte includere i file, ma quando provo e compilare, ottengo una barca di errori nei file in linea del tipo:

definizione della funzione dllimport non ammessi

curlpp Sicuramente un sacco di persone hanno utilizzato con VS2008 e mi manca qualcosa di ovvio.

+0

Qualcuno potrebbe taggarlo con tag curlpp, per favore? –

risposta

0

In genere le persone ricevono questo errore quando cercano di #includere il file di intestazione di una libreria con la macro "EXPORT" della libreria definita. curlpp deve avere qualche macro, di solito si trova nel codice che assomiglia a questo:

#ifdef NATIVEDLL_EXPORTS 
#define NATIVEDLL_API extern "C" __declspec(dllexport) 
#else 
#define NATIVEDLL_API __declspec(dllimport) 
#endif 

e si ha la NATIVEDLL_EXPORTS definiti nel preprocessore. Rimuovi questa definizione. ppcurl non sarà chiamato "NATIVEDLL_EXPORTS", avrà un nome proprio.

2

Date un'occhiata a \ include \ curlpp \ interno \ buildconfig.h file in cui vi sono le seguenti macro definite

CURLPPAPI 
CURLPP_INCLUDE_TEMPLATE_DEFINITIONS 
CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION 

sulla base di valori di questi tre macro

CURLPP_STATICLIB 
BUILDING_CURLPP 
CURLPP_SELF_CONTAINED 

Leggi su di loro nel file README.win32 e definire di conseguenza tre macro di conseguenza.
Nel caso in cui abbiate ancora problemi, fatecelo sapere.

A proposito; Oggi ho messo la versione attuale del curlpp per il download curlpp-current.2009.05.21

0

aggiunta alla risposta di Piotr: non dimenticare di costruire libcurl stessa conseguenza - dinamico o statico e definire CURL_STATICLIB fianco CURLPP_STATICLIB (se costruire versione statica, ovviamente). E su un sidenote: assolutamente non mi piaceva CURLPP, era difficile capire come farlo fare quello che mi serve. Potresti voler usare pure libcurl con il tuo wrapper.