Originariamente inviato da Gil Mour
Ho il seguente problema: ho scritto una dll, e durante l'inizializzazione apro un file di log.

Quando lancio un applicazione che fa da client alla dll per testarla, se durante il debug apro questo logfile ci trovo dentro le informazioni che ho scritto, ma nonappena termino l'applicazione client, se vado a controllare il file lo trovo vuoto.

Credo dipenda dal fatto che non faccio fclose sul file, ma il problema è che non so dove farla.

Esiste una funzione di finalize chiamata dal sistema operativo (win) quando la dll va giu?
Le DLL hanno un entry-point DllMain(), uno dei suoi parametri è 'dwReason', che può essere: DLL_PROCESS_ATTACH, DLL_PROCESS_DETACH, DLL_THREAD_ATTACH o DLL_THREAD_DETACH.

Basta che tieni il "conto" di quanti processi si sono attaccati. Man mano che si staccano decrementi il conto. Arrivato a 0, nessun processo è attaccato (quindi la DLL verrà poi scaricata) e quindi puoi fare le finalizzazioni che ti servono.