Savipedia

La libreria delle soluzioni
Una soluzione in ogni libro, un libro per ogni soluzione.

" Come installare la libreria POCO C++ e usarla staticamente " Niki

Navigatore Chiudi
  1. Installare POCO C++



    La libreria C++ POCO è, per chi la conosce, una risorsa potentissima.
    Se vi è mai capitato di lavorare con la rete (Socket, HTTP, FTP, ecc.) sapete cosa significa. POCO vi agevola enormemente nel compito.

    Come se non bastasse è gratuita! E con (attualmente) licenza Boost, quindi potete farci ciò che volete e girarla come un calzino che non vi dice niente nessuno. Un grande grazie alla Applied Informatics.

    Ma vediamo come si installare la libreria in Windows e creare un progetto in Visual Studio che ne faccia uso.
  2. Questi annunci tengono il sito vivo e gratuito.
    Precedente
  3. Per procedere per favore attendi secondi. Grazie.
    Prossima Vai a pagina
  4. Scaricare POCO.

    Recarsi sul sito di POCO, che è qui, e nella pagina di download scaricare la versione che preferiamo.

    Sicuramente serve la versione Windows e, in base all'utilizzo che ne vorremo fare, decidiamo se scaricare la versione minimale o quella completa. NB: la completa richiede delle dipendenze, come OpenSSL per l'SSL (al momento supporta fino alla 1.0.2! Poi la OpenSSL ha cambiato le lib e la compilazione di POCO non le trova più), MySQL per il mysql e così via.


    Risorsa di Savipedia
  5. Scompattare il file zip da qualche parte.

    A questo punto prendiamo il file .zip che abbiamo appena scaricato e scompattiamolo in una cartella. La cartella di destinazione può essere quella che vogliamo. Magari evitiamo di nasconderla negli inferi della nostra memoria: tipo in "C:\libs\" va benissimo.



    Risorsa di Savipedia
  6. Crea il nuovo progetto in Visual Studio.



    A questo punto creare il nuovo progetto in Visual Studio con la solita procedura "File > Nuovo > Progetto".

    Assegnare il nome che si vuole, la cartella che si vuole, e quindi crearlo.

    Aprire quindi il nuovo progetto in Visual Studio.

    Per poter utilizzare la libreria occorre includere le "LIB" di POCO nel progetto che ne fa uso.

    Tuttavia ancora non abbiamo questi file disponibili, perché vanno generati compilando la libreria nel sistema di sviluppo.

    Vediamo come si fa il "build" della libreria.
  7. Lanciare il comando "buildwin.cmd" dal prompt.


    Per lanciare il build occorre aprire una finestra di prompt e navigare fino alla cartella dove abbiamo estratto la libreria.
    A questo punto bisogna invocare il file "buildwin.cmd".

    Nota: se si sta cercando di compilare la versione full, prima ricorda di aprire il file "buildwin.cmd" con un editor di testo e di modificare le directory delle dipendenze assegnate verso l'inizio, altrimenti il linker darà di matto.

    Lanciare il comando:
    buildwin.cmd 120 build static_md both Win32 samples

    Dove 120 è la versione di Visual Studio 2013. Cambia questo numero in basa alla versione che usi.
    Per una spiegazione dei comandi lanciare "buildwin.cmd" senza parametri.



    Risorsa di Savipedia
  8. io sto compilando la libreria in modo statico, per non dover portarmi dietro i file dll di POCO nel progetto che verrà generato dai miei sorgenti.

    Tuttavia se si vuole invece utilizzare le dll, è sufficiente cambiare la voce static_md in shared. Per il resto la procedura è la stessa (meno che per la definizione della flag "POCO_STATIC" che non andrebbe fatta).

    Al termine della compilazione, giubilo (a me ha richiesto una decina di minuti).



    Risorsa di Savipedia
  9. Aggiungere le librerie generate al vcproj.



    Ora che abbiamo generato i file ".lib" che si trovano nella cartella "lib" di dove abbiamo scompattato la libreria, dobbiamo includerle nel nostro progetto in modo da fargliele usare.

    Per fare questo bisogna dire al progetto dove sono i file ".lib" che contengono il funzionamento dei metodi di POCO e dove stanno i file header ".h" che descrivono la libreria, permettendoci anche di sfruttare le funzioni avanzate di autocompletamento dell'intelliSense.


    Quindi apriamo il nostro progetto in Visual Studio e visualizziamone le proprietà cliccando col tasto destro sul progetto e selezionando la voce "Proprietà".


  10. Risorsa di Savipedia
  11. Risorsa di Savipedia



    Selezionare tra le impostazioni del "C++" la voce "Additional Include Directories" e lì aggiungere le cartelle include di tutti i componenti di POCO.
    L'immagine di come fare si trova nella prossima pagina.

    Notare che io ho usato la mia directory di scompattamento di POCO che è "G:\libs\", ma tu dovrai sostituirla con la tua.
  12. Risorsa di Savipedia

    Base (es: poco-1.7.8p2)
    G:\libs\<poco>\XML\include
    G:\libs\<poco>\Util\include
    G:\libs\<poco>\Net\include
    G:\libs\<poco>\CppUnit\include
    G:\libs\<poco>\JSON\include
    G:\libs\<poco>\Foundation\include

    Completo (es: poco-1.7.8p3-all)
    G:\libs\<poco>\Crypto\include
    G:\libs\<poco>\Data\include
    G:\libs\<poco>\NetSSL_OpenSSL\include
    G:\libs\OpenSSL-1.0.2-Win32\include



    Sostituire <poco> col nome della cartella di POCO.
  13. Fatto questo, ora bisogna segnalare al progetto dove sono i file ".lib", e per far questo occorre dichiarare prima la directory tra le proprietà del "Linker" (assicurarsi che in alto sia selezionato "All Configurations" nella combo):


    Risorsa di Savipedia

    Le directory in questione qui sono:

     Base (es: poco-1.7.8p2)
    G:\libs\poco-1.7.8p3-all
     Completa (es: poco-1.7.8p3-all)
    G:\libs\OpenSSL-1.0.2-Win32\lib\VC\static

    ma come al solito vanno sostituite con le proprie omologhe.

    Infine vanno dichiarate le singole "lib". Pagina seguente.
  14. Risorsa di Savipedia


    NB: questa modifica è diversa tra "Debug" e "Release", quindi occorre stare attenti al valore della configurazione attiva in alto, poiché la configurazione "Debug" vuole lo stesso nome di quelle di "Release", ma con una "d" in coda, quindi quello che è normalmente "PocoFoundationmd.lib" per "Release" è "PocoFoundationmdd.lib" per "Debug".

    La "md" sta per "static_md" che è il tipo di compilazione. Fosse stato "shared" non ci sarebbe stato "md". Mentre la "d" aggiunta di "Debug" sta per "debug" e c'è sia in compilazione "static" che "shared".

    Detto questo, spostarsi nella pagina proprietà:
    Configuration Properties > Linker > Input
    ed aggiungere le seguenti voci Additional Dependencies.
  15. Release
    Base (es: poco-1.7.8p2)
    CppUnitmd.lib
    PocoFoundationmd.lib
    PocoJSONmd.lib
    PocoNetmd.lib
    PocoUtilmd.lib
    PocoXMLmd.lib
    Completa (es: poco-1.7.8p3-all)
    PocoCryptomd.lib
    PocoDatamd.lib
    PocoDataMySqlmd.lib
    PocoNetSSLmd.lib
    PocoZipmd.lib
    libeay32md.lib
    ssleay32md.lib
    crypt32.lib

    Debug
    Per "debug" sono le stesse voci ma con una "d" alla fine del nome, tipo "PocoDatamd.lib" diventa "PocoDatamdd.lib" (su tutti tranne che per "crypt32.lib", che in debug resta così).

    Perché libeay32md.lib e ssleay32md.lib?
    Sono dipendenze di NetSSL_OpenSSL (full), o spara il linker.

    Perché crypt32.lib?
    E' una dipendenza di POCO Crypto e fa parte della libreria di sistema di Windows, se non viene incluso la versione full spara una lunga serie di errori linker.
  16. Definire "POCO_STATIC" nel preprocessore.



    Ora bisogna fare una piccola modifica che va applicata solo se si è compilato staticamente la libreria POCO, come nel caso descritto in questo libro. Il che vuol dire che se hai compilato come "shared", non hai bisogno di questa definizione e puoi passare oltre.


    Se noi andassimo a compilare il nostro progetto così, in "Debug" il linker lamenterebbe che non riesce a trovare per esempio "PocoFoundationd.lib". Il che è strano dal momento che è una lib generata in modalità "shared". Questo perché POCO usa dei #pragma intelligenti per includere le librerie di dipendenza. Quindi affinché riesca a trovare le librerie giuste, occorre dirgli che sta lavorando in configurazione statica (come libreria statica e non con l'ausilio delle dll). Per fare questo occorre aggiungere la definizione POCO_STATIC al preprocessore del progetto che usa POCO. Ossia il nostro progetto. Quindi apriamo di nuovo le proprietà del progetto e aggiungiamo questa definizione nella scheda del pre-processore.
  17. Risorsa di Savipedia



    A questo punto il sistema dovrebbe essere in grado di utilizzare la libreria di POCO.


    Facciamo una prova al volo nella prossima pagina utilizzando una funzionalità base di POCO come il parse di un URI.
  18. Creare un file "main.cpp" (se non c'è già) nel progetto e metteterci questo codice:



    #include "Poco/URI.h"
    #include <iostream>

    int main (int argcconst char *argv)
    {
    Poco::URI uri1("http://www.appinf.com:81/sample?example-query#somewhere");
    std::string buffer;
    buffer = "Scheme:    " + uri1.getScheme() + "\n" +            "Authority: " + uri1.getAuthority() + "\n" +           + "Path:      " + uri1.getPath() + "\n"           + "Query:     " + uri1.getQuery() + "\n"           + "Fragment:  " + uri1.getFragment() + "\n";
    }



    Mettere un breakpoint sulla riga di output di costruzione di "buffer", compilare e vedere innanzitutto se compila senza problemi, quindi se, fermandosi sul breakpoint, "buffer" assumerà il valore che deve assumere di stringa esplicativa oppure no.
Il Savibook richiede jQuery. Scegli la versione più appropriata in base a se il tuo sito lo ha già installato.
Quindi copia il seguente testo all'interno del tuo sito per incorporare il libro "Come installare la libreria POCO C++ e usarla staticamente".
Questo sito fa uso di cookies per migliorare la tua esperienza pubblicitaria nei libri, la quale ci permette di mantenere il servizio gratuito, e per analizzarne il traffico per potenziare nel tempo la sua navigazione.
Continuando ad utilizzare il sito affermi di comprenderne la funzione e di accettarne l'utilizzo.