2009-05-15 10 views
10

Ich versuche, eine C++ - Konsolenanwendung in VS2008 mit der statischen curppp-Bibliothek zu erstellen. Der Code - die 00 curlpp Beispiel - ist wie folgt:Verwenden von CurlPP mit 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; 
} 

ich die Quelle heruntergeladen haben und habe meine Include-Pfad zu der Quelle wies Dateien enthalten, aber wenn ich versuche, und kompilieren, erhalte ich eine Schiffsladung Fehler in den Inline-Dateien des Typs:

Definition dllimport Funktion nicht

erlaubt

Sicherlich viele Leute mit VS2008 verwendet haben curlpp und ich bin etwas fehlt offensichtlich.

+0

Könnte jemand dies bitte mit curppp-Tags versehen? –

Antwort

0

Normalerweise erhalten Benutzer diesen Fehler, wenn sie versuchen, die Headerdatei einer Bibliothek mit dem Makro "EXPORT" der Bibliothek zu definieren. curlpp müssen einige Makro, in der Regel im Code gefunden, der wie folgt aussieht:

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

und Sie haben die NATIVEDLL_EXPORTS im Preprocessor definiert. Entferne diese Definition. ppcurl wird nicht "NATIVEDLL_EXPORTS" heißen, es wird einen eigenen Namen haben.

2

Werfen Sie einen Blick auf \ include \ curlpp \ interne \ buildconfig.h Datei, in der die folgenden Makros

CURLPPAPI 
CURLPP_INCLUDE_TEMPLATE_DEFINITIONS 
CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION 

basierend auf den Werten dieser drei Makros

CURLPP_STATICLIB 
BUILDING_CURLPP 
CURLPP_SELF_CONTAINED 

lesen definiert es werden über sie in README.win32 Datei und definieren Sie entsprechend oben drei Makros.
Falls Sie noch ein Problem haben, lassen Sie es uns wissen.

Übrigens; heute habe ich aktuelle Version von curlpp für curlpp-current.2009.05.21

0

Zusatz Piotr Antwort Download: vergessen Sie nicht, entsprechend Libcurl selbst zu bauen - dynamisch oder statisch und definieren CURL_STATICLIB neben CURLPP_STATICLIB (wenn Gebäude statische Version, natürlich). Und auf einer Nebenbemerkung: Ich mochte CURLPP absolut nicht, es war schwer zu verstehen, wie man es machen kann, was ich brauche. Vielleicht möchten Sie pure libcurl mit Ihrem eigenen Wrapper verwenden.