I experienced several problems compiling the library (0.7.2) under
Windows (MSVS 2005).
1. VC refuses to compile line 74 in CurlHandle.hpp
CURL * CURLPPAPI getHandle() const;
Error 4 error C2059: syntax error : '__declspec(dllexport)'
e:\downloads\curlpp-0.7.2\curlpp-0.7.2\curlpp\CurlHandle.hpp 74
Resolution:
The reason is that __declspec(dllexport) (which is CURLPPAPI) must
appear to the left of the export symbol declaration. So changing the
line with
CURLPPAPI CURL * getHandle() const;
produces no compilation errors. This should be applied to other exported
functions.
2. Compilation error in curlpp/types.hpp: "curlpp/global.h" not such
file or directory
Resolution:
You should either use
#include "global.h"
or add
".\" to the additional include directories
3. In CurlHandle.cpp (in several places):
runtimeAssert( "Error when trying to curl_easy_init() a handle", mCurl );
Warning 3 warning C4800: 'CURL *' : forcing value to bool 'true'
or 'false' (performance warning)
e:\Downloads\curlpp-0.7.2\curlpp-0.7.2\curlpp\CurlHandle.cpp 77
Resolution:
Just rewrite the code to
runtimeAssert( "...", !!mCurl );
to make void* => bool conversion safe
4.Linking problems:
Easy.obj : error LNK2019: unresolved external symbol "public: class
cURLpp::OptionList & __thiscall cURLpp::OptionList::operator=(class
cURLpp::OptionList const &)" (??4OptionList_at_cURLpp@@QAEAAV01_at_ABV01@@Z)
referenced in function "public: class cURLpp::Easy & __thiscall
cURLpp::Easy::operator=(class cURLpp::Easy &)"
(??4Easy_at_cURLpp@@QAEAAV01_at_AAV01@@Z)
1>Easy.obj : error LNK2019: unresolved external symbol "public: static
void __cdecl cURLpp::OptionSetter<class std::basic_ostream<char,struct
std::char_traits<char> > *,10001>::setOpt(class cURLpp::CurlHandle
*,class std::basic_ostream<char,struct std::char_traits<char> > *)"
(?setOpt@?$OptionSetter_at_PAV?$basic_ostream_at_DU?$char_traits_at_D@std@@@std@@$0CHBB@@cURLpp@@SAXPAVCurlHandle_at_2@PAV?$basic_ostream_at_DU?$char_traits_at_D@std@@@std@@@Z)
referenced in function "private: virtual void __thiscall
cURLpp::OptionTrait<class std::basic_ostream<char,struct
std::char_traits<char> > *,10001>::updateHandleToMe(class
cURLpp::CurlHandle *)const "
(?updateHandleToMe@?$OptionTrait_at_PAV?$basic_ostream_at_DU?$char_traits_at_D@std@@@std@@$0CHBB@@cURLpp@@EBEXPAVCurlHandle_at_2@@Z)
1
Resolution:
Because it looks that the given symbols are not actually used, simply
commenting out these function declarations resolves the problem.
PS: There is no problem from my side to provide formal patches etc to
the source tree, just let me know.
Regards,
Andrei Korostelev
_______________________________________________
cURLpp mailing list
cURLpp_at_rrette.com
http://www.rrette.com/mailman/listinfo/curlpp
Received on 2008-09-23