10

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

肯定有很多人在 vs2008 中使用过 curlpp,但我遗漏了一些明显的东西。

4

3 回答 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

于 2009-05-21T16:28:47.570 回答
0

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

于 2011-11-27T06:29:44.740 回答
0

通常人们在尝试#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”,它会有自己的名字。

于 2009-05-20T21:23:31.147 回答