Importazione di file e librerie dei tipi
Le parole chiave MIDL includono, importare e importlib consentono di riutilizzare il codice facendo riferimento ai file ODL (Existing Header, IDL e Object Definition Language) e alle librerie dei tipi compilate.
La direttiva di inclusione ACF consente di specificare in un file ACF uno o più file di intestazione del linguaggio C da includere nel codice stub generato da MIDL. Il file generato avrà una riga con una direttiva #include del preprocessore C con il file di intestazione indicato. Utilizzare questa direttiva include per inserire file di intestazione specifici di un particolare ambiente operativo e che non contengono informazioni necessarie per l'interfaccia tra client e server. Non usare include per i file di intestazione contenenti tipi di dati che si desidera rendere disponibili per il file IDL; Usare invece la direttiva import .
Esempio 1
[
auto_handle
]
interface X86PC
{
include "gendefs.h", "protos.h", "myfile.h";
//interface typdefs and function declarations here
}
La direttiva di importazione IDL è il metodo standard per l'inserimento di definizioni di tipo e interfaccia da altri file IDL (o ODL) e file di intestazione nel file IDL. Tutte le istruzioni IDL nel file importato, ad esempio typedef, dichiarazioni const e definizioni di interfaccia diventano disponibili per il file IDL di importazione.
Analogamente alla direttiva del preprocessore C-language #include, la direttiva import indica al compilatore di includere i tipi di dati definiti nei file IDL importati. A differenza della direttiva #include , la direttiva import ignora i prototipi di routine, poiché non vengono generati stub per qualsiasi elemento nel file importato. Poiché il preprocessore viene richiamato separatamente per il file importato, le direttive del preprocessore (ad esempio **) non vengono riportate nel file IDL di importazione.
Per altre informazioni sull'uso dell'importazione per includere i file di intestazione di sistema in un file IDL, vedere Importazione di file di intestazione di sistema.
Esempio 2
[
uuid(. . .), object
]
interface IKnown : IUnknown
{
import "base.idl", "unknwn.idl", "helper.idl";
//remainder of interface definition
}
La direttiva ODL importlib consente di fare riferimento a una libreria dei tipi compilata nel file IDL o ODL. La direttiva importlib deve trovarsi all'interno di un'istruzione di libreria e deve precedere altre descrizioni dei tipi nella libreria. La libreria importata, nonché la libreria generata, deve essere disponibile per l'applicazione in fase di esecuzione.
Esempio 3
library NewBrowser
{
importlib("stdole32.tlb");
importlib("legacy.tlb");
//remainder of library definition
};
È anche possibile usare la direttiva #include del preprocessore C per includere intestazioni e altri file nel file IDL o ODL. Tenere presente, tuttavia, che questa direttiva includerà letteralmente l'intero contenuto del file specificato. Se un file di intestazione contiene prototipi non necessari o desiderati nei file stub generati da MIDL o se contiene definizioni di tipi non modificabili, è consigliabile utilizzare la direttiva di importazione MIDL anziché la direttiva #include .
Argomenti correlati