Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Poyoncio en 15 Septiembre 2016, 16:36 pm



Título: [C++]Cpr - cURL para humanos
Publicado por: Poyoncio en 15 Septiembre 2016, 16:36 pm
Acabo de encontrar esta maravillosa API inspirada en mi amada requests de python :P
https://github.com/whoshuu/cpr

Y estoy teniendo problemas para utilizarla. Antes de nada decir que yo suelo editar los programas con gedit o SublimeText y compilo con g++.
El problema esta en que nunca e tocado nada de ficheros "make" o algo asi que siempre se sale si usas un entorno como CodeBlocks.

El problema es que no entiendo que tengo que hacer para utilizar esta libreria. Es decir hay una carpeta llamada include, he descargado esa carpeta y puesta en la misma carpeta que mi fichero, y me da siempre errores.
No acabo de entender la documentacion para usar la libreria alguien me podria hechar una mano? :silbar:



Casi nunca he usado librerias externas asi que no tengo ni idea del tema.


Título: Re: [C++]Cpr - cURL para humanos
Publicado por: AlbertoBSD en 15 Septiembre 2016, 16:42 pm
Tienes que agregar parametros de linkeo al compilador esto es:

Código:
g++ -o test test.cpp `curl-config --cflags` `curl-config --libs`

si ejecutas
Código:
curl-config --libs
te deberia de devolver algo -lcurl -L/usr/.....

Eso es lo que falta para incluir el Curl


Título: Re: [C++]Cpr - cURL para humanos
Publicado por: ivancea96 en 15 Septiembre 2016, 16:51 pm
Sin make, puedes simplemente crear un proyecto con otro IDE (Code::Blocks por ejemplo), meter los archvios cpp y h en él, y compilar.
No debería darte mucho problema. Si te los da, pon por aquí.


Al proyecto puedes meterle directamente tu main. Si quieres tener las librerías como tales, basta que cojas los archvios .o que suele generar el IDE.


Título: Re: [C++]Cpr - cURL para humanos
Publicado por: Poyoncio en 15 Septiembre 2016, 17:13 pm
Tienes que agregar parametros de linkeo al compilador esto es:

Código:
g++ -o test test.cpp `curl-config --cflags` `curl-config --libs`

si ejecutas
Código:
curl-config --libs
te deberia de devolver algo -lcurl -L/usr/.....

Eso es lo que falta para incluir el Curl

Trato de ejecutar lo que me dices y solo me genera errores.
La parte de
Código:
curl-config --libs
me devuelve
bash: curl-config: no se encontró la orden

he hecho un apt-get install curl pero estoy en las mismas.. Lo tengo ya instalado.

Sin make, puedes simplemente crear un proyecto con otro IDE (Code::Blocks por ejemplo), meter los archvios cpp y h en él, y compilar.
No debería darte mucho problema. Si te los da, pon por aquí.


Al proyecto puedes meterle directamente tu main. Si quieres tener las librerías como tales, basta que cojas los archvios .o que suele generar el IDE.
Que es eso de los archivos .o?
He tratado tambien de incluir todas las cabeceras .h sacandolas de la carpeta y ejecutando:
Código
  1. #include "cpr.h"
  2.  
  3. int main(int argc, char** argv) {
  4.    auto r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
  5.                      cpr::Authentication{"user", "pass"},
  6.                      cpr::Parameters{{"anon", "true"}, {"key", "value"}});
  7.    r.status_code;                  // 200
  8.    r.header["content-type"];       // application/json; charset=utf-8
  9.    r.text;                         // JSON text string
  10. }
Seguramente sera algo sencillo pero no caigo en que es
e descargado la carpeta de aqui: https://github.com/whoshuu/cpr/tree/master/include/cpr
y me genera un error muy grande,solo pongo el principio, el comando usado es g++ proj.cpp -o proj:
Tambien he probado con el comando de alberto y sigue dando un error similar.








In file included from /usr/include/c++/4.9/future:35:0,
                 from api.h:5,
                 from cpr.h:4,
                 from proj.cpp:2:
/usr/include/c++/4.9/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support for the \
  ^
In file included from api.h:8:0,
                 from cpr.h:4,
                 from proj.cpp:2:
auth.h:13:28: error: expected ‘,’ or ‘...’ before ‘&&’ token
     Authentication(UserType&& username, PassType&& password)
                            ^
auth.h:17:33: error: expected ‘;’ at end of member declaration
     const char* GetAuthString() const noexcept;
                                 ^
auth.h:17:39: error: ‘noexcept’ does not name a type
     const char* GetAuthString() const noexcept;
                                       ^
auth.h: In constructor ‘cpr::Authentication::Authentication(UserType)’:
auth.h:14:24: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
             : username_{CPR_FWD(username)}, password_{CPR_FWD(password)},
                        ^
In file included from auth.h:6:0,
                 from api.h:8,
                 from cpr.h:4,
                 from proj.cpp:2:
defines.h:6:22: error: ‘forward’ is not a member of ‘std’
 #define CPR_FWD(...) ::std::forward<decltype(__VA_ARGS__)>(__VA_ARGS__)
                      ^
auth.h:14:25: note: in expansion of macro ‘CPR_FWD’
             : username_{CPR_FWD(username)}, password_{CPR_FWD(password)},
                         ^
auth.h:14:33: error: ‘username’ was not declared in this scope
             : username_{CPR_FWD(username)}, password_{CPR_FWD(password)},
                                 ^
defines.h:6:46: note: in definition of macro ‘CPR_FWD’
 #define CPR_FWD(...) ::std::forward<decltype(__VA_ARGS__)>(__VA_ARGS__)
                                              ^
defines.h:6:57: error: there are no arguments to ‘decltype’ that depend on a template parameter, so a declaration of ‘decltype’ must be available [-fpermissive]
 #define CPR_FWD(...) ::std::forward<decltype(__VA_ARGS__)>(__VA_ARGS__)





Título: Re: [C++]Cpr - cURL para humanos
Publicado por: ivancea96 en 15 Septiembre 2016, 17:46 pm
Citar
error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.

Pon "-std=c++11". No sé qué IDE utilizas. En Code::Blocks, irías a "Opciones -> Compilador" y ahí en la lista de checkboxes, marcarías "Have g++ follow the C++11 ISO C++ language standar [-std=c++11]"

Y bueno, "un error muy grande". Lee los errores y fíjate qué dicen xD
Sino, pues eso, postea los siguientes errores.


Título: Re: [C++]Cpr - cURL para humanos
Publicado por: Poyoncio en 15 Septiembre 2016, 22:48 pm
Pon "-std=c++11". No sé qué IDE utilizas. En Code::Blocks, irías a "Opciones -> Compilador" y ahí en la lista de checkboxes, marcarías "Have g++ follow the C++11 ISO C++ language standar [-std=c++11]"

Y bueno, "un error muy grande". Lee los errores y fíjate qué dicen xD
Sino, pues eso, postea los siguientes errores.
Pues hasta ahora solo utilizaba sublime text (y compilaba con g++) porque code::blocks no me acaba de convencer, pero lo he probado alli ahora y le he cambiado lo que comentas y ya "solo" me da 2 errores, a lo de grande me referia a muy largo ;-) que me ocupaba como diez terminales lo que he posteado es un trozito comparado con lo que retornaba :silbar:

voy a seguir investigando un poco, si consigo solucionarlo lo comentare por aqui ;D
este es el mensaje de error que me da ahora, voy a mirarlo durante un rato haber si puedo solucionarlo ;)
Código:
-------------- Build file: "no target" in "no project" (compiler: unknown)---------------
g++ -std=c++11  -c /home/windows-vista/Documentos/C++/dprrrr/cpr/main.cpp -o /home/windows-vista/Documentos/C++/dprrrr/cpr/main.o
g++  -o /home/windows-vista/Documentos/C++/dprrrr/cpr/main /home/windows-vista/Documentos/C++/dprrrr/cpr/main.o  
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `main':
main.cpp:(.text+0x60): referencia a `cpr::Parameters::Parameters(std::initializer_list<cpr::Parameter> const&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `cpr::Response cpr::Get<std::string, cpr::Authentication, cpr::Parameters>(std::string&&, cpr::Authentication&&, cpr::Parameters&&)':
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x23): referencia a `cpr::Session::Session()' sin definir
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x75): referencia a `cpr::Session::Get()' sin definir
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x82): referencia a `cpr::Session::~Session()' sin definir
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x93): referencia a `cpr::Session::~Session()' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::map<std::string, std::string, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::operator[](std::string&&)':
main.cpp:(.text._ZNSt3mapISsSsN3cpr22CaseInsensitiveCompareESaISt4pairIKSsSsEEEixEOSs[_ZNSt3mapISsSsN3cpr22CaseInsensitiveCompareESaISt4pairIKSsSsEEEixEOSs]+0x90): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `void cpr::priv::set_option<std::string>(cpr::Session&, std::string&&)':
main.cpp:(.text._ZN3cpr4priv10set_optionISsEEvRNS_7SessionEOT_[_ZN3cpr4priv10set_optionISsEEvRNS_7SessionEOT_]+0x2a): referencia a `cpr::Session::SetOption(std::string const&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator<std::pair<std::string const, std::string> >, std::string const&)':
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0xa1): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x147): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x202): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x2dd): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x386): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o:main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSA_PSt13_Rb_tree_nodeIS2_E[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSA_PSt13_Rb_tree_nodeIS2_E]+0x5e): más referencias a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir a continuación
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `void cpr::priv::set_option<cpr::Authentication>(cpr::Session&, cpr::Authentication&&)':
main.cpp:(.text._ZN3cpr4priv10set_optionINS_14AuthenticationEEEvRNS_7SessionEOT_[_ZN3cpr4priv10set_optionINS_14AuthenticationEEEvRNS_7SessionEOT_]+0x2a): referencia a `cpr::Session::SetOption(cpr::Authentication const&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `void cpr::priv::set_option<cpr::Parameters>(cpr::Session&, cpr::Parameters&&)':
main.cpp:(.text._ZN3cpr4priv10set_optionINS_10ParametersEEEvRNS_7SessionEOT_[_ZN3cpr4priv10set_optionINS_10ParametersEEEvRNS_7SessionEOT_]+0x2a): referencia a `cpr::Session::SetOption(cpr::Parameters&&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::_M_lower_bound(std::_Rb_tree_node<std::pair<std::string const, std::string> >*, std::_Rb_tree_node<std::pair<std::string const, std::string> >*, std::string const&)':
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS2_ESB_RS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS2_ESB_RS1_]+0x38): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::_M_get_insert_unique_pos(std::string const&)':
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_]+0x5c): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_]+0x11b): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
collect2: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 1 second(s))
2 error(s), 0 warning(s) (0 minute(s), 1 second(s))
-------------- Build file: "no target" in "no project" (compiler: unknown)---------------
g++ -std=c++11  -c /home/windows-vista/Documentos/C++/dprrrr/cpr/main.cpp -o /home/windows-vista/Documentos/C++/dprrrr/cpr/main.o
g++  -o /home/windows-vista/Documentos/C++/dprrrr/cpr/main /home/windows-vista/Documentos/C++/dprrrr/cpr/main.o  
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `main':
main.cpp:(.text+0x60): referencia a `cpr::Parameters::Parameters(std::initializer_list<cpr::Parameter> const&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `cpr::Response cpr::Get<std::string, cpr::Authentication, cpr::Parameters>(std::string&&, cpr::Authentication&&, cpr::Parameters&&)':
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x23): referencia a `cpr::Session::Session()' sin definir
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x75): referencia a `cpr::Session::Get()' sin definir
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x82): referencia a `cpr::Session::~Session()' sin definir
main.cpp:(.text._ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_[_ZN3cpr3GetIISsNS_14AuthenticationENS_10ParametersEEEENS_8ResponseEDpOT_]+0x93): referencia a `cpr::Session::~Session()' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::map<std::string, std::string, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::operator[](std::string&&)':
main.cpp:(.text._ZNSt3mapISsSsN3cpr22CaseInsensitiveCompareESaISt4pairIKSsSsEEEixEOSs[_ZNSt3mapISsSsN3cpr22CaseInsensitiveCompareESaISt4pairIKSsSsEEEixEOSs]+0x90): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `void cpr::priv::set_option<std::string>(cpr::Session&, std::string&&)':
main.cpp:(.text._ZN3cpr4priv10set_optionISsEEvRNS_7SessionEOT_[_ZN3cpr4priv10set_optionISsEEvRNS_7SessionEOT_]+0x2a): referencia a `cpr::Session::SetOption(std::string const&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::_M_get_insert_hint_unique_pos(std::_Rb_tree_const_iterator<std::pair<std::string const, std::string> >, std::string const&)':
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0xa1): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x147): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x202): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x2dd): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE29_M_get_insert_hint_unique_posESt23_Rb_tree_const_iteratorIS2_ERS1_]+0x386): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o:main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSA_PSt13_Rb_tree_nodeIS2_E[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSA_PSt13_Rb_tree_nodeIS2_E]+0x5e): más referencias a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir a continuación
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `void cpr::priv::set_option<cpr::Authentication>(cpr::Session&, cpr::Authentication&&)':
main.cpp:(.text._ZN3cpr4priv10set_optionINS_14AuthenticationEEEvRNS_7SessionEOT_[_ZN3cpr4priv10set_optionINS_14AuthenticationEEEvRNS_7SessionEOT_]+0x2a): referencia a `cpr::Session::SetOption(cpr::Authentication const&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `void cpr::priv::set_option<cpr::Parameters>(cpr::Session&, cpr::Parameters&&)':
main.cpp:(.text._ZN3cpr4priv10set_optionINS_10ParametersEEEvRNS_7SessionEOT_[_ZN3cpr4priv10set_optionINS_10ParametersEEEvRNS_7SessionEOT_]+0x2a): referencia a `cpr::Session::SetOption(cpr::Parameters&&)' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::_M_lower_bound(std::_Rb_tree_node<std::pair<std::string const, std::string> >*, std::_Rb_tree_node<std::pair<std::string const, std::string> >*, std::string const&)':
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS2_ESB_RS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS2_ESB_RS1_]+0x38): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
/home/windows-vista/Documentos/C++/dprrrr/cpr/main.o: En la función `std::_Rb_tree<std::string, std::pair<std::string const, std::string>, std::_Select1st<std::pair<std::string const, std::string> >, cpr::CaseInsensitiveCompare, std::allocator<std::pair<std::string const, std::string> > >::_M_get_insert_unique_pos(std::string const&)':
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_]+0x5c): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
main.cpp:(.text._ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_[_ZNSt8_Rb_treeISsSt4pairIKSsSsESt10_Select1stIS2_EN3cpr22CaseInsensitiveCompareESaIS2_EE24_M_get_insert_unique_posERS1_]+0x11b): referencia a `cpr::CaseInsensitiveCompare::operator()(std::string const&, std::string const&) const' sin definir
collect2: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 1 second(s))
2 error(s), 0 warning(s) (0 minute(s), 1 second(s))



Comienzo a pensar que igual no es error de compilador ni nada por el estilo, sino que es algo que falta por meterle al proyecto

PD: Gracias por la paciencia, que dios os vendiga con 14 hijos y 20 mujeres :silbar:

 


Título: Re: [C++]Cpr - cURL para humanos
Publicado por: ivancea96 en 15 Septiembre 2016, 22:57 pm
Estás compilando el main solo.
Te decía que hicieras un proyecto, porque Code::Blocks (como casi cualquier IDE) se encarga de ver qué archivos tiene que compilar y en qué orden.

Si quieres utilizar una librería que no está compilada, tienes que compilarla. Para ello, tienes que compilar por separado cada archivo .cpp de la librería. Esas compilaciones, generarán un archivo de código objeto (generalmente .o). Luego, hay que enlazar todos estos archivos .o (incluido el del main) para generar el archivo ejecutable.


Los errores que tienes indican que hay funciones que se nombran, pero cuyo código no se encuentra.
Citar
main.cpp:(.text+0x60): referencia a `cpr::Parameters::Parameters(std::initializer_list<cpr::Parameter> const&)' sin definir
El constructor Parameters se utiliza, pero no está compilado en ningún lugar. Si estuviera el .cpp compilado, encontraría esa función en el .o.

Tienes varias opciones. Una es, crear un proyecto con Code::Blocks, meter todos los archivos, y dejar que se encargue Code::Blocks. La otra, es compilar cada archivo .cpp de la librería.
Para ello, en resumen:
Código:
lib1.cpp, lib2.cpp, main.cpp

g++ -std=c++11 -c lib1.cpp -o lib1.o
g++ -std=c++11 -c lib2.cpp -o lib2.o
g++ -std=c++11 -c main.cpp -o main.o
g++ lib1.o lib2.o main.o -o main.exe


Título: Re: [C++]Cpr - cURL para humanos
Publicado por: Poyoncio en 16 Septiembre 2016, 19:27 pm
Estás compilando el main solo.
Te decía que hicieras un proyecto, porque Code::Blocks (como casi cualquier IDE) se encarga de ver qué archivos tiene que compilar y en qué orden.

Si quieres utilizar una librería que no está compilada, tienes que compilarla. Para ello, tienes que compilar por separado cada archivo .cpp de la librería. Esas compilaciones, generarán un archivo de código objeto (generalmente .o). Luego, hay que enlazar todos estos archivos .o (incluido el del main) para generar el archivo ejecutable.


Los errores que tienes indican que hay funciones que se nombran, pero cuyo código no se encuentra.El constructor Parameters se utiliza, pero no está compilado en ningún lugar. Si estuviera el .cpp compilado, encontraría esa función en el .o.

Tienes varias opciones. Una es, crear un proyecto con Code::Blocks, meter todos los archivos, y dejar que se encargue Code::Blocks. La otra, es compilar cada archivo .cpp de la librería.
Para ello, en resumen:
Código:
lib1.cpp, lib2.cpp, main.cpp

g++ -std=c++11 -c lib1.cpp -o lib1.o
g++ -std=c++11 -c lib2.cpp -o lib2.o
g++ -std=c++11 -c main.cpp -o main.o
g++ lib1.o lib2.o main.o -o main.exe
Pero son ficheros .h....
Lo que he hecho ha sido meter esos ficheros .h en "add file to project" es decir lo meto como si estuviera todo dentro del proyecto y me sigue dando esos errores. No me peges porfavor  :xD pero soy demasiado inutil en estas cosas.......  :(



Tambien estoy pensando en que alomejor tengo que añadir algo de esto, pero esque no entiendo nada de que se tiene que añadir:
http://imgur.com/aTJUNLl


Creo que al final me decantare por curl me estoy ya cansando, un poco de todo este tema... Me hace perder mucho tiempo... y tampoco es plan que me lo tengais que solucionar todo...


Y muchas gracias por tu tiempo


Título: Re: [C++]Cpr - cURL para humanos
Publicado por: ivancea96 en 16 Septiembre 2016, 22:15 pm
Los .cpp tambien los tienes que meter al proyecto.