Tipi di DLL
In questo argomento vengono fornite informazioni utili per determinare il tipo di DLL da compilare.
Diversi tipi di DLL disponibili
Usando Visual Studio, è possibile compilare DLL Win32 in C o C++ che non usano la libreria Microsoft Foundation Class (MFC). È possibile creare un progetto DLL non MFC con la Creazione guidata applicazione Win32.
La libreria MFC è disponibile, nelle librerie di collegamento statiche o in una serie di DLL, con la Creazione guidata DLL MFC. Se la DLL usa MFC, Visual Studio supporta tre diversi scenari di sviluppo dll:
Compilazione di una normale DLL MFC che collega in modo statico MFC
Compilazione di una normale DLL MFC che collega in modo dinamico MFC
Compilazione di una DLL di estensione MFC, che collega sempre in modo dinamico MFC
Scegliere l'argomento su cui visualizzare maggiori informazioni
Scelta del tipo di DLL da usare
Se la DLL non usa MFC, usare Visual Studio per compilare una DLL Win32 non MFC. Il collegamento della DLL a MFC (staticamente o dinamicamente) occupa spazio su disco e memoria significativi. Non è consigliabile collegarsi a MFC a meno che la DLL non usi effettivamente MFC.
Se la DLL usa MFC e verrà usata dalle applicazioni MFC o non MFC, è necessario compilare una NORMALE DLL MFC che collega dinamicamente a MFC o a una normale DLL MFC che collega staticamente a MFC. Nella maggior parte dei casi, è probabile che si voglia usare una NORMALE DLL MFC che collega dinamicamente a MFC perché le dimensioni del file della DLL saranno molto più piccole e il risparmio in memoria dall'uso della versione condivisa di MFC può essere significativo. Se si collega in modo statico a MFC, le dimensioni del file della DLL saranno maggiori e potrebbero richiedere memoria aggiuntiva perché carica la propria copia privata del codice della libreria MFC.
La compilazione di una DLL che collega dinamicamente a MFC è più veloce rispetto alla compilazione di una DLL che collega in modo statico a MFC perché non è necessario collegarsi a MFC stesso. Ciò vale soprattutto nelle compilazioni di debug in cui il linker deve compattare le informazioni di debug. Collegando con una DLL che contiene già le informazioni di debug, sono disponibili meno informazioni di debug da compattare all'interno della DLL.
Uno svantaggio del collegamento dinamico a MFC è che è necessario distribuire le DLL condivise Mfcx0.dll e Msvcrxx.dll (o file simili) con la DLL. Le DLL MFC sono liberamente ridistribuibili, ma è comunque necessario installare le DLL nel programma di installazione. Inoltre, è necessario spedire il Msvcrxx.dll, che contiene la libreria di runtime C usata sia dal programma che dalle DLL MFC stesse.
Se la DLL verrà usata solo dai file eseguibili MFC, è possibile scegliere tra la compilazione di una NORMALE DLL MFC o una DLL di estensione MFC. Se la DLL implementa classi riutilizzabili derivate dalle classi MFC esistenti o è necessario passare oggetti derivati da MFC tra l'applicazione e la DLL, è necessario compilare una DLL di estensione MFC.
Se la DLL si collega dinamicamente a MFC, le DLL MFC potrebbero essere ridistribuite con la DLL. Questa architettura è particolarmente utile per condividere la libreria di classi tra più file eseguibili per risparmiare spazio su disco e ridurre al minimo l'utilizzo della memoria.