2009-05-15 21 views
10

Estoy intentando crear una aplicación de consola C++ en VS2008 usando la biblioteca curlpp estática. El código - que es ejemplo curlpp 00 - es la siguiente:Uso de 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; 
} 

que he descargado la fuente y tener mi ruta de inclusión señaló la fuente incluir archivos, pero cuando intento compilar, obtengo un bote lleno de errores en los archivos en línea del tipo:

definición de la función dllimport no permitieron

curlpp Seguramente mucha gente ha utilizado con VS2008 y yo estoy perdiendo algo obvio.

+0

¿Podría alguien etiquetar esto con la etiqueta curlpp, por favor? –

Respuesta

0

Normalmente, las personas obtienen este error cuando intentan #incluir el archivo de encabezado de una biblioteca con la macro "EXPORT" de la biblioteca definida. curlpp debe tener alguna macro, que normalmente se encuentran en el código que se parece a esto:

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

y tiene los NATIVEDLL_EXPORTS definidos en el preprocesador. Eliminar esta definición ppcurl no se llamará "NATIVEDLL_EXPORTS", tendrá un nombre propio.

2

Tome un vistazo a \ include \ curlpp \ interior \ buildconfig.h archivo donde se encuentran las siguientes macros definidas

CURLPPAPI 
CURLPP_INCLUDE_TEMPLATE_DEFINITIONS 
CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION 

basado en valores de estas tres macros

CURLPP_STATICLIB 
BUILDING_CURLPP 
CURLPP_SELF_CONTAINED 

Leer sobre ellos en archivo README.win32 y defina las tres macros anteriores en consecuencia.
En caso de que todavía tenga un problema comuníquenoslo.

Por cierto; Hoy pongo versión actual de curlpp para descargar curlpp-current.2009.05.21

0

adición a la respuesta de Piotr: no se olvide de construir libcurl sí en consecuencia - dinámica o estática y definir CURL_STATICLIB junto CURLPP_STATICLIB (si la construcción de la versión estática, por supuesto). Y en una nota al margen: absolutamente no me gustaba el CURLPP, era difícil entender cómo hacer que hiciera lo que necesitaba. Es posible que desee utilizar purecurcurl con su propio contenedor.