2009-05-15 13 views
10

Próbuję zbudować aplikację konsoli C++ w VS2008 przy użyciu statycznej biblioteki curlpp. Kod - co jest curlpp przykład 00 - jest następujący:Używanie CurlPP z 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; 
} 

Pobrałem źródła i mieć moje zawierać ścieżkę wskazał źródła zawierają pliki, ale gdy próbuję i skompilować, otrzymuję boatload błędy w plikach inline typu:

definicja funkcji dllimport niedozwolone

pewnością wiele ludzi wykorzystali curlpp z VS2008 i i 'm brakuje czegoś oczywiste.

+0

Czy ktoś mógłby oznaczyć to tagiem curlpp? –

Odpowiedz

0

Zazwyczaj ludzie otrzymują ten błąd, gdy próbują # dołączyć plik nagłówkowy biblioteki z zdefiniowanym makrem "EKSPORTU" biblioteki. curlpp musi mieć jakieś makro, zazwyczaj występującej w kodzie, który wygląda tak:

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

i masz NATIVEDLL_EXPORTS zdefiniowane w preprocesora. Usuń tę definicję. ppcurl nie będzie nazywał się "NATIVEDLL_EXPORTS", będzie miał własną nazwę.

2

Spójrz na \ include \ curlpp \ wewnętrzny \ buildconfig.h plik gdzie istnieją następujące makra zdefiniowane

CURLPPAPI 
CURLPP_INCLUDE_TEMPLATE_DEFINITIONS 
CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION 

na podstawie wartości tych trzech makr

CURLPP_STATICLIB 
BUILDING_CURLPP 
CURLPP_SELF_CONTAINED 

Czytaj o nich w pliku README.win32 i odpowiednio zdefiniuj powyższe trzy makra.
Jeśli nadal masz problem, daj nam znać.

Przy okazji; dzisiaj kładę aktualną wersję curlpp za pobranie curlpp-current.2009.05.21

0

oprócz odpowiedź Piotra: nie zapomnij, aby zbudować libcurl sobie odpowiednio - dynamicznie lub statycznie i zdefiniować CURL_STATICLIB obok CURLPP_STATICLIB (jeśli budowania wersji statycznej, oczywiście). I na stronie internetowej: Absolutnie nie lubiłem CURLPP, trudno było zrozumieć, jak zrobić to, czego potrzebuję. Możesz użyć czystej libcurl z własnym opakowaniem.

Powiązane problemy