Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Libreria cpr c++

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

Moderatore: Foto Utenteg.schgor

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 UtenteDeltaElectronics
141 1 2 6
Stabilizzato
Stabilizzato
 
Messaggi: 337
Iscritto il: 27 set 2015, 14:01

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 Utentexyz
4.965 2 4 5
Master EY
Master EY
 
Messaggi: 1287
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

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 UtenteDeltaElectronics
141 1 2 6
Stabilizzato
Stabilizzato
 
Messaggi: 337
Iscritto il: 27 set 2015, 14:01

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 Utentexyz
4.965 2 4 5
Master EY
Master EY
 
Messaggi: 1287
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

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 UtenteDeltaElectronics
141 1 2 6
Stabilizzato
Stabilizzato
 
Messaggi: 337
Iscritto il: 27 set 2015, 14:01

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 Utentexyz
4.965 2 4 5
Master EY
Master EY
 
Messaggi: 1287
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

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 UtenteDeltaElectronics
141 1 2 6
Stabilizzato
Stabilizzato
 
Messaggi: 337
Iscritto il: 27 set 2015, 14:01

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 Utentexyz
4.965 2 4 5
Master EY
Master EY
 
Messaggi: 1287
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

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 3 volte
Avatar utente
Foto UtenteDeltaElectronics
141 1 2 6
Stabilizzato
Stabilizzato
 
Messaggi: 337
Iscritto il: 27 set 2015, 14:01

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
Avatar utente
Foto Utentexyz
4.965 2 4 5
Master EY
Master EY
 
Messaggi: 1287
Iscritto il: 5 dic 2009, 18:37
Località: Italy Turin

Prossimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti