Newsgroup: it.comp.lang.c++
Titolo: funzioni nelle dll

salve,qualcuno saprebbe dirmi come è possibile richiamare una funzione da
una dll?uso borland c++ 5.05 e questo problema non sono ancora riuscito a
risolverlo.
grazie

 writes:

Cos'e' una dll?
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it
Alan Turing thought the whole life about the question of whether
machines can think; a question of which we now know that it is
about as relevant as the question of whether submarines can swim.
                -- Edsger W. Dijkstra

Cos'e' una dll?
Dynamic Link Libraries. Sostanzialmente delle librerie in cui
il link avviene a run-time; si usano in maniera essenziale per
driver di periferica (caricato a run-time in base alle scelte
dell'utente) o problematiche simili. Sotto windows svolgono
anche la funzione delle shared library di unix (usando la
descrizione abbastanza strana di "link statico alle DLL").
Lo standard C++ non le nomina esplicitamente (non hanno voluto
occuparsi di questa rogna) ma la presenza del concetto di DLL
ha pilotato alcune delle scelte effettuate nella stesura del
documento (in particolare la logica di inizializzazione scelta
per le istanze "non-local static-duration").
Tutte le problematiche relative alle DLL sono lasciate alle
singole implementazioni; lo standard si e' limitato a lasciare
aperta la possibilita' che un programma C++ possa usare cose
come le DLL permettendo il differimento dell'inizializzazione
delle istanze statiche sino al momento dell'uso di una qualunque
funzione o dato della compilation unit che le definisce.
HTH
Andrea
--
Andrea Griffini, Programmer
http://www.netservers.com/~agriff

 wrote in message
3a546e7...@news.interbusiness.it...


 ehm..ma non mi avete risposto...
Beh, se _fosse_ una shared library Unix dovresti semplicemente
dichiararla, ad esempio con un comando
KCC -o eseguibile miofile.cpp -L /path/libraria -l nome libreria
Ma visto che e' solo _analoga_, non so che dirti.  Dll non ne ho mai
usate in mia vita.


ehm..ma non mi avete risposto...
Innanzitutto bisognerebbe capire cosa vuoi fare... ti interessa
un load dinamico esplicito oppure semplicemente quello che
in windows chiamano "link statico a DLL" ?
Nel primo caso penso dovresti leggere la documentazione di
LoadLibrary e delle funzioni collegate; nel secondo caso io so
come fare con il VC++, non ci ho mai provato con bcc (per ora).
Come gia' detto pero' si tratta di cose non inerenti il C++
standard ... hai provato un gruppo specifico del compilatore o
almeno specifico di Win32 ?


 wrote:
Allora, al momento non ho installato l'help del borland c++ 5.05 ma
comunque ho installato quello delle VCL di borland.
Nell'help ci sta scritto (e l'ho usato personalmente per scrivere una
dll) che esiste una parola chiave riservata per le dll. Più che altro
é un modificatore come interrupt nei compilatori borland x dos.....
tipo __declspec(dllexport) nome(parametri);
tipo __declspec(dllimport) nome(parametri);
tipo __declspec(thread) nome(parametri);
thread viene utilizzato nei software multi thread per creare copie
statiche delle funzioni.......
cmq .... dllimport indica che la dll deve essere importata
dllexport esporta la dll.
dllexport e dllimport possono essere uguagliati ai modificatori
__export ed __import.... prova quindi ad utilizzare queste due
keyword.
__export int reset(void)
{
	ExitWindowEx(0);
}
per farti un esempio........
spero di esserti stato d'aiuto.. cmq fai riferimento all'help del
compilatore per ulteriori esempi..... o dai un'occhiata agli esempi di
borland che sono sempre utili.
Antonio Mazzeo
