使用CurlPP和vs2008

10

我正在尝试使用静态curlpp库在VS2008中构建C ++控制台应用程序。 代码 - 这是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;
}

我已经下载了源代码,并将我的包含路径指向了源代码中的包含文件,但是当我尝试编译时,在内联文件中出现了许多“definition of dllimport function not allowed”类型的错误。

肯定有很多人已经在vs2008中使用curlpp,而我缺少了一些显而易见的东西。


有人可以请给这个打上curlpp标签吗? - Piotr Dobrogost
3个回答

2

请查看\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
通常人们在尝试使用库的“EXPORT”宏定义来包含库的头文件时会遇到此错误。curlpp必须具有一些宏,通常可以在类似以下代码的代码中找到:
#ifdef NATIVEDLL_EXPORTS
#define NATIVEDLL_API extern "C" __declspec(dllexport)
#else
#define NATIVEDLL_API __declspec(dllimport)
#endif

并且您在预处理器中定义了NATIVEDLL_EXPORTS。请删除此定义。ppcurl将不会被称为“NATIVEDLL_EXPORTS”,它将有自己的名称。


0
补充Piotr的回答:不要忘记相应地构建libcurl本身 - 动态或静态,并在CURLPP_STATICLIB旁边定义CURL_STATICLIB(如果构建静态版本,当然)。 另外一点:我绝对不喜欢CURLPP,很难理解如何让它做我需要的事情。您可能希望使用纯libcurl与自己的包装器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接