Importazione di file e librerie di tipi
Le parole chiave MIDL includono, importae importlib consentono di riutilizzare il codice facendo riferimento a file di intestazione, IDL e di definizione degli oggetti (ODL) esistenti e librerie di tipi compilate.
La direttiva ACF include 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. Usare questa direttiva include per inserire file di intestazione specifici di un particolare ambiente operativo che non contengono informazioni necessarie per l'interfaccia tra client e server. Non usare includere 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 IDL import è il metodo standard per portare 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 di const e le definizioni di interfaccia diventano disponibili nel file IDL importatore.
Analogamente alla direttiva del preprocessore C #include, la direttivadi importazioneindica 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 incluse nel file IDL di importazione.
Per altre informazioni sull'uso di importare 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 della libreria e deve precedere le altre descrizioni di 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 rimovibili, è consigliabile usare la direttiva MIDL import anziché la direttiva #include.
Argomenti correlati