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

ソースをダウンロードし、インクルードパスがソースインクルードファイルを指しているのですが、コンパイルしようとすると、次のタイプのインラインファイルで大量のエラーが発生します。

dllimport関数の定義は許可されていません

確かに多くの人がvs2008でcurlppを使用していて、私は明らかな何かを見逃しています。

4

3 に答える 3

2

Take a look at \include\curlpp\internal\buildconfig.h file where there are the following macros defined

CURLPPAPI
CURLPP_INCLUDE_TEMPLATE_DEFINITIONS
CURLPP_TEMPLATE_EXPLICIT_INSTANTIATION

based on values of these three macros

CURLPP_STATICLIB
BUILDING_CURLPP
CURLPP_SELF_CONTAINED 

Read about them in README.win32 file and define above three macros accordingly.
In case you still have a problem let us know.

By the way; today I put current version of curlpp for downloading 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

通常、ライブラリの「EXPORT」マクロが定義された状態でライブラリのヘッダー ファイルを #include しようとすると、このエラーが発生します。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 に答える