PDA

Visualizza la versione completa : [C++] Utilizzare librerie esterne


XWolverineX
05-11-2006, 09:55
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


#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


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


3)
Caricarla via API di windows


void *lib = LoadLibrary("lib.dll");
GetProcAddres(bla bla);
//usi il codice


Perchè tanti modi? me li spieghereste

XWolverineX
05-11-2006, 15:51
hop

MItaly
05-11-2006, 17:01
Originariamente inviato da XWolverineX
Praticamente nel programma si fa cosi


#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


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


Serve solamente per le dll .NET.


3)
Caricarla via API di windows


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).

Vincent
06-11-2006, 18:51
#include <header.h>
#pragma comment(lib,"libreria.lib")
//usi la libreria

opp.

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






ed in C è uguale??? :confused:

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

MItaly
06-11-2006, 19:06
Sì; header.h è un file di header contenente i prototipi delle funzioni contenute nel file .lib.

Vincent
06-11-2006, 19:16
se uso


#using "libreria.dll"

non devo includere il file .h?

MItaly
06-11-2006, 19:21
Come già detto poco sopra, la sintassi #using "nomelibreria.dll" funziona solo per dll .NET.

Vincent
06-11-2006, 19:23
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 :oVVoVe: cavolata esagerata?

:ciauz:

MItaly
06-11-2006, 19:28
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.

Vincent
06-11-2006, 19:34
Grazie Milleee!

Loading