2009-05-15 7 views
10

J'essaye de construire une application de console C++ dans VS2008 en utilisant la bibliothèque statique curlpp. Le code - qui est par exemple curlpp 00 - est comme suit:Utilisation de CurlPP avec 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; 
} 

J'ai téléchargé la source et que mon include_path a la source inclure des fichiers, mais quand je tente de compiler, je reçois un bateau plein de erreurs dans les fichiers inline du type: définition

de la fonction dllimport pas permis

Certes, beaucoup de gens ont utilisé curlpp avec VS2008 et je me manque quelque chose évidente.

+0

Quelqu'un pourrait-il marquer ceci avec une étiquette curlpp, s'il vous plaît? –

Répondre

0

Généralement, les personnes obtiennent cette erreur lorsqu'elles tentent #include le fichier d'en-tête d'une bibliothèque avec la macro "EXPORT" de la bibliothèque définie. curlpp doit avoir une macro, on trouve habituellement dans le code qui ressemble à ceci:

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

et vous avez les NATIVEDLL_EXPORTS définis dans le préprocesseur. Supprimer cette définition ppcurl ne s'appellera pas "NATIVEDLL_EXPORTS", il aura son propre nom.

2

Jetez un oeil à \ include \ curlpp \ interne \ buildconfig.h fichier où sont les macros suivantes définies

CURLPPAPI 
CURLPP_INCLUDE_TEMPLATE_DEFINITIONS 
CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION 

fondé sur des valeurs de ces trois macros

CURLPP_STATICLIB 
BUILDING_CURLPP 
CURLPP_SELF_CONTAINED 

Lire à leur sujet dans README.win32 fichier et définissez ci-dessus trois macros en conséquence.
Si vous avez encore un problème, faites-le nous savoir.

Par ailleurs; aujourd'hui, je mets la version actuelle de curlpp pour le téléchargement curlpp-current.2009.05.21

0

Ajout à la réponse de Piotr: ne pas oublier de construire lui-même en conséquence libcurl - dynamique ou statique et définir CURL_STATICLIB à côté CURLPP_STATICLIB (si la construction version statique, bien sûr). Et sur une note: Je n'aimais absolument pas CLPLPP, il était difficile de comprendre comment le faire faire ce dont j'avais besoin. Vous pouvez utiliser la libcurl pure avec votre propre wrapper.