Использование CurlPP с vs2008 - PullRequest
10 голосов
/ 15 мая 2009

Я пытаюсь создать консольное приложение C ++ в VS2008, используя статическую библиотеку curlpp. Код, который является примером curlpp 00, выглядит следующим образом:

#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;
}

Я скачал исходный код и указал мой путь включения на исходные файлы включения, но когда я пытаюсь скомпилировать, я получаю множество ошибок во встроенных файлах типа:

определение функции dllimport не разрешено

Конечно, многие люди использовали curlpp с vs2008, и я упускаю что-то очевидное.

Ответы [ 3 ]

2 голосов
/ 21 мая 2009

Взгляните на файл \ include \ curlpp \ internal \ buildconfig.h , в котором определены следующие макросы

CURLPPAPI
CURLPP_INCLUDE_TEMPLATE_DEFINITIONS
CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION

на основе значений этих трех макросов

CURLPP_STATICLIB
BUILDING_CURLPP
CURLPP_SELF_CONTAINED 

Прочтите о них в файле README.win32 и определите три вышеупомянутых макроса соответственно.
Если у вас все еще есть проблема, сообщите нам.

Кстати; сегодня выложил актуальную версию curlpp для скачивания curlpp-current.2009.05.21

0 голосов
/ 27 ноября 2011

Дополнение к ответу Петра: не забудьте соответственно построить сам libcurl - динамически или статически и определить CURL_STATICLIB вместе с CURLPP_STATICLIB (если, конечно, создается статическая версия). И на заметку: мне абсолютно не нравился CURLPP, было трудно понять, как заставить его делать то, что мне нужно. Возможно, вы захотите использовать чистый libcurl со своей собственной оболочкой.

0 голосов
/ 21 мая 2009

Обычно люди получают эту ошибку, когда пытаются #include заголовочный файл библиотеки с определенным макросом библиотеки "EXPORT". curlpp должен иметь некоторый макрос, обычно встречающийся в коде, который выглядит следующим образом:

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

и у вас есть NATIVEDLL_EXPORTS, определенный в препроцессоре. Удалить это определение. ppcurl не будет называться «NATIVEDLL_EXPORTS», у него будет собственное имя.

...