Libreria cpr c++

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto UtenteDeltaElectronics
224 1 3 7
Sostenitore
Sostenitore
Messaggi: 597
Iscritto il: 27 set 2015, 14:01
0
voti

[1] Libreria cpr c++

Messaggioda Foto UtenteDeltaElectronics » 21 giu 2018, 16:08

Buongiorno,
Volevo utilizzare per un mio progetto questa libreria che ho scaricato:
https://github.com/whoshuu/cpr;
Solo che quando provo a compilare l'esempio qua riportato:

Codice: Seleziona tutto

int main(int argc, char** argv) {
    auto r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
                  cpr::Authentication{"user", "pass"},
                  cpr::Parameters{{"anon", "true"}, {"key", "value"}});
}


Ottengo il seguente errore: C:\Users\~1\~\ccNPvCtN.o main.cpp:(.text+0x78): undefined reference to `cpr::Parameters::Parameters(std::initializer_list const&)...'
Come potrei risolvere ?
Il compilatore che uso è DevC++ (mingw).

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
1
voti

[2] Re: Libreria cpr c++

Messaggioda Foto Utentexyz » 21 giu 2018, 16:47

DevC++ è un IDE non un compilatore, MinGW è il porting del compilatore GNU GCC per API di Windows.

Quel codice manca di una cosa fondamentale l'include della libreria. Aggiungi prima del main la riga (come riportato nella documentazione):

Codice: Seleziona tutto

#include <cpr/cpr.h>

Avatar utente
Foto UtenteDeltaElectronics
224 1 3 7
Sostenitore
Sostenitore
Messaggi: 597
Iscritto il: 27 set 2015, 14:01
0
voti

[3] Re: Libreria cpr c++

Messaggioda Foto UtenteDeltaElectronics » 21 giu 2018, 16:55

xyz ha scritto:DevC++ è un IDE non un compilatore, MinGW è il porting del compilatore GNU GCC per API di Windows.

Quel codice manca di una cosa fondamentale l'include della libreria. Aggiungi prima del main la riga (come riportato nella documentazione):

Codice: Seleziona tutto

#include <cpr/cpr.h>

Sì, mi ero dimenticato di trascriverlo.... in ogni caso nel programma che tento vanamente di compilare ovviamente la

Codice: Seleziona tutto

#include<cpr/cpr.h>

è presente.
Riusciresti ad aiutarmi ?
Grazie

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
1
voti

[4] Re: Libreria cpr c++

Messaggioda Foto Utentexyz » 21 giu 2018, 17:16

Io uso Linux come sistema operativo e ho compilato la libreria via Cmake. Quel esempio si compila senza nessun errore da linea di comando:

Codice: Seleziona tutto

g++ -I ../cpr/include  -L ../cpr-build/lib example.cpp -o example -lcpr

Quel errore è generato non dal compilatore ma dal linker, non trova il simbolo "cpr::Parameters::Parameters", molto probabilmente hai dimenticato di aggiungere il nome della libreria (opzione "-lcpr") e il percorso dove si trova (opzione "-L ../cpr-build/lib" il path dipende dove installata).

Avatar utente
Foto UtenteDeltaElectronics
224 1 3 7
Sostenitore
Sostenitore
Messaggi: 597
Iscritto il: 27 set 2015, 14:01
0
voti

[5] Re: Libreria cpr c++

Messaggioda Foto UtenteDeltaElectronics » 21 giu 2018, 18:11

xyz ha scritto:Io uso Linux come sistema operativo e ho compilato la libreria via Cmake. Quel esempio si compila senza nessun errore da linea di comando:

Codice: Seleziona tutto

g++ -I ../cpr/include  -L ../cpr-build/lib example.cpp -o example -lcpr


Ti ringrazio e ti chiedo scusa se abuso ancora della tua pazienza, ma visto che è la prima volta in assoluto che uso una libreria non di sistema..... ne approfitto per chiedere altre domande che, spero, possano risolvere il mio problema.
Allora, innanzi tutto non trovo la cartella ../cpr-build/lib nel pacchetto che ho scaricato.
E' il risultato del building della libreria cpr ?
Come si,fa ? passo passo; perché ammetto di essere piuttosto ignorante in materia.
Grazie ancora della tua cortesia.

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[6] Re: Libreria cpr c++

Messaggioda Foto Utentexyz » 21 giu 2018, 18:30

Prima di tutto le tue domande sono chiaramente documentate nel manuale ufficiale del compilatore GNU GCC, che ti invito a leggere:

https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/

Opzione "-L":

https://gcc.gnu.org/onlinedocs/gcc-8.1. ... ml#index-L

indica il path dove si trova la libreria e come ho scritto dipende dove uno ha la libreria, io ho usato un path relativo alla directory dove ho compilato la libreria. Questa opzione funziona solo se la libreria esiste, se è stata compilata correttamente e se il percorso viene indicato corettamente, altrimenti il linker segnalerà un errore.

Avatar utente
Foto UtenteDeltaElectronics
224 1 3 7
Sostenitore
Sostenitore
Messaggi: 597
Iscritto il: 27 set 2015, 14:01
0
voti

[7] Re: Libreria cpr c++

Messaggioda Foto UtenteDeltaElectronics » 22 giu 2018, 3:40

xyz ha scritto:Io uso Linux come sistema operativo e ho compilato la libreria via Cmake. Quel esempio si compila senza nessun errore da linea di comando:.

Hai utilizzato questo per caso: https://cmake.org/runningcmake/ ?

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[8] Re: Libreria cpr c++

Messaggioda Foto Utentexyz » 22 giu 2018, 12:11

Si, io uso la versione presente nella distribuzione Linux che uso. Da quello che ho visto quella libreria usa il sistema di compilazione via CMake.

Avatar utente
Foto UtenteDeltaElectronics
224 1 3 7
Sostenitore
Sostenitore
Messaggi: 597
Iscritto il: 27 set 2015, 14:01
0
voti

[9] Re: Libreria cpr c++

Messaggioda Foto UtenteDeltaElectronics » 24 giu 2018, 17:58

xyz ha scritto:Si, io uso la versione presente nella distribuzione Linux che uso. Da quello che ho visto quella libreria usa il sistema di compilazione via CMake.

Buongiorno,

Ho provato ad usare Cmake ma ottengo solo degli errori, che sono riassunti nello screenshot e nei due file di testo contenuti nello .zip allegato.
Scusami se continuo nel rompere le scatole, ma sono ad un punto morto oltre al quale non riesco ad andare.
Grazie ancora.
Allegati
cmake_cpr.rar
(49.75 KiB) Scaricato 165 volte

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[10] Re: Libreria cpr c++

Messaggioda Foto Utentexyz » 24 giu 2018, 18:21

L'errore è evidente e viene riportato nella seguente riga:

...
set_property could not find TARGET libcurl.
...

Questa libreria dipende da altre librerie. Nella documentazione è scritto chiaramente i comandi che devi dare per prendere i sorgenti e per inizializzare i moduli esterni (submodule) con il seguente comando:

Codice: Seleziona tutto

...
git submodule update --init --recursive


in questo modo clonerà i repository necessari tra cui quello della libreria "libcurl" e la posizionerà nella opportuna directory in automatico. Se i moduli esterni sono inizializzati e aggiornati puoi eseguire CMake per compilare i sorgenti.

Se prendi i sorgenti da GIThub devi conoscere i comandi di GIT, la documentazione ufficiale spiega il funzionamento dei moduli esterni:

https://git-scm.com/docs/git-submodule


Torna a “Programmi applicativi: simulatori, CAD ed altro”