Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565

    C++ - Utilizzare delle librerie esterne

    Salve a tutti.
    Ancora non ho chiaro come cacchio funzionino le librerie esterne.
    Finora ho visto vari modi per inserirle in un programma e poi caricarle...

    1) .h+lib+dll

    Praticamente nel programma si fa cosi
    codice:
    #include <header.h>
    #pragma comment(lib,"libreria.lib")
    //usi la libreria
    Ma automaticamente avviene anche il collegamento con una dll (questo fatto lo fa direct3d9)
    Ma perchè?

    2) Usare un using

    Lo fa jonny_deep nel forum
    codice:
    #using "libreria.dll"
    //usi la libreria
    3)
    Caricarla via API di windows
    codice:
    void *lib = LoadLibrary("lib.dll");
    GetProcAddres(bla bla);
    //usi il codice
    Perchè tanti modi? me li spieghereste
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  2. #2
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    hop
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  3. #3

    Re: C++ - Utilizzare delle librerie esterne

    Originariamente inviato da XWolverineX
    Praticamente nel programma si fa cosi
    codice:
    #include <header.h>
    #pragma comment(lib,"libreria.lib")
    //usi la libreria
    Ma automaticamente avviene anche il collegamento con una dll (questo fatto lo fa direct3d9)
    Ma perchè?
    Nel .h ci sono i prototipi delle funzioni compilate nel .lib che poi richiamano le funzioni esportate dalle dll.
    2) Usare un using

    Lo fa jonny_deep nel forum
    codice:
    #using "libreria.dll"
    //usi la libreria
    Serve solamente per le dll .NET.
    3)
    Caricarla via API di windows
    codice:
    void *lib = LoadLibrary("lib.dll");
    GetProcAddres(bla bla);
    //usi il codice
    Questo è un link dinamico creato a runtime. Serve prevalentemente per usare funzioni di cui non c'è .lib e .h o per funzioni che si sa solo a runtime se verranno chiamate (ad esempio funzioni specifiche di una certa versione di Windows).
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4

    #include <header.h>
    #pragma comment(lib,"libreria.lib")
    //usi la libreria

    opp.

    #using "libreria.dll"
    //usi la libreria



    ed in C è uguale???

    Quell'header.h cos'è??? :master:

  5. #5
    Sì; header.h è un file di header contenente i prototipi delle funzioni contenute nel file .lib.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    se uso

    Codice PHP:
    #using "libreria.dll" 
    non devo includere il file .h?

  7. #7
    Come già detto poco sopra, la sintassi #using "nomelibreria.dll" funziona solo per dll .NET.
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Ma poi, ancora non ho capito il vantaggio di usare una DLL...

    Rendo il programma più leggero?

    Esempio Pratico:

    Se scrivo 2000 funzioni, e anzichè includerle nel progetto che creo con il "Dev" per esempio, includo la DLL solamente, rendendo il progetto stesso più "leggero"

    Mi sono risposto da solo? Oppure ho detto una VVoVe: cavolata esagerata?


  9. #9
    Hai il vantaggio di creare eseguibili più leggeri e di poter condividere le funzioni tra tante applicazioni, aggiornando solo la dll nel caso in cui si trovi un bug invece di tutti gli eseguibili.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Grazie Milleee!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.