我正在尝试使用静态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;
}我已经下载了源代码,并将我的include路径指向了源代码include文件,但是当我尝试编译时,我在以下类型的内联文件中得到了大量错误:
不允许定义dllimport函数
肯定有很多人在vs2008中使用过curlpp,而我遗漏了一些明显的东西。
发布于 2009-05-21 16:28:48
查看\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-20 21:23:31
通常,当人们试图在定义了库的"EXPORT“宏的情况下包含库的头文件时,会出现这个错误。curlpp必须有一些宏,通常可以在如下代码中找到:
#ifdef NATIVEDLL_EXPORTS
#define NATIVEDLL_API extern "C" __declspec(dllexport)
#else
#define NATIVEDLL_API __declspec(dllimport)
#endif并且您已经在预处理器中定义了NATIVEDLL_EXPORTS。删除此定义。ppcurl不会被称为"NATIVEDLL_EXPORTS",它会有自己的名字。
发布于 2011-11-27 14:29:45
除了Piotr的回答:不要忘记相应地动态或静态地构建libcurl本身,并与CURLPP_STATICLIB一起定义CURL_STATICLIB (当然,如果构建静态版本)。顺便说一句:我绝对不喜欢CURLPP,很难理解如何让它做我需要的事情。您可能希望将纯libcurl与您自己的包装器一起使用。
https://stackoverflow.com/questions/870110
复制相似问题