Importowanie plików i bibliotek typów
Słowa kluczowe MIDL obejmują, import, i importlib, umożliwiając ponowne użycie kodu przez odwoływanie się do istniejących plików nagłówkowych, języka IDL i języka definicji obiektów (ODL), oraz skompilowanych bibliotek typów.
ACF zawierają dyrektywę umożliwia określenie w pliku ACF co najmniej jednego pliku nagłówka języka C, które mają zostać uwzględnione w kodzie wycinkowym wygenerowanym w języku MIDL. Wygenerowany plik będzie zawierał wiersz z dyrektywą preprocesora C #include oraz wskazanym plikiem nagłówkowym. Użyj tej dyrektywy include, aby wprowadzić pliki nagłówkowe specyficzne dla środowiska operacyjnego, a nie zawierające informacji niezbędnych dla interfejsu między klientem a serwerem. Nie należy używać dołączania dla plików nagłówkowych zawierających typy danych, które mają być dostępne dla pliku IDL; Zamiast tego należy użyć dyrektywy import.
Przykład 1
[
auto_handle
]
interface X86PC
{
include "gendefs.h", "protos.h", "myfile.h";
//interface typdefs and function declarations here
}
Dyrektywa IDL importu jest standardową metodą wprowadzania definicji typów i interfejsów z innych plików IDL (lub ODL) oraz plików nagłówkowych do twojego pliku IDL. Wszystkie instrukcje IDL w zaimportowanym pliku, takie jak definicje typów, deklaracje i definicje interfejsu stają się dostępne dla importowanego pliku IDL.
Podobnie jak dyrektywa preprocesora języka C #include, dyrektywa import nakazuje kompilatorowi uwzględnienie typów danych zdefiniowanych w zaimportowanych plikach IDL. W przeciwieństwie do dyrektywy #include, dyrektywa import ignoruje prototypy procedur, ponieważ żadne wycinki nie są generowane dla niczego w importowanym pliku. Ponieważ preprocesor jest wywoływany oddzielnie dla importowanego pliku, dyrektywy preprocesora (takie jak **) nie są przenoszone do importowania pliku IDL.
Aby uzyskać dodatkowe informacje na temat używania importowania dołączania plików nagłówków systemu do pliku IDL, zobacz Importowanie plików nagłówków systemu.
Przykład 2
[
uuid(. . .), object
]
interface IKnown : IUnknown
{
import "base.idl", "unknwn.idl", "helper.idl";
//remainder of interface definition
}
Dyrektywa ODL importlib umożliwia odwołanie do skompilowanej biblioteki typów w pliku IDL lub ODL. Dyrektywa importlib musi znajdować się wewnątrz instrukcji biblioteki i musi poprzedzać inne opisy typów w bibliotece. Zaimportowana biblioteka, a także wygenerowana biblioteka, musi być dostępna dla aplikacji w czasie wykonywania.
Przykład 3
library NewBrowser
{
importlib("stdole32.tlb");
importlib("legacy.tlb");
//remainder of library definition
};
Możesz również użyć dyrektywy #include preprocesora języka C, aby uwzględnić nagłówki i inne pliki w pliku IDL lub ODL. Należy jednak pamiętać, że ta dyrektywa będzie zawierać dosłownie całą zawartość określonego pliku. Jeśli plik nagłówka zawiera prototypy, których nie potrzebujesz ani nie chcesz w plikach szkieletowych generowanych przez MIDL, lub jeśli zawiera definicje typów niezdalnych, należy użyć dyrektywy MIDL import zamiast dyrektywy #include.
Tematy pokrewne