Condividi tramite


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.

importare

importlib

includere

Importazione di File di Intestazione di Sistema