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 .

Importazione

importlib

Includono

Importazione di file di intestazione di sistema