Importowanie plików nagłówków systemu
Chociaż często można użyć dyrektywy #include do uwzględnienia plików nagłówkowych w pliku IDL, nie jest zalecane. Kompilator MIDL wygeneruje wycinki dla wszystkich funkcji zdefiniowanych w skompilowanym pliku IDL. Zazwyczaj plik nagłówkowy zawiera wiele prototypów, których nie potrzebujesz ani nie chcesz dołączać do plików wycinków, a #include skutecznie umieszcza wszystkie te definicje w głównym pliku IDL. Ponadto, jeśli w pliku nagłówka zdefiniowane są typy nieremotowalne, plik IDL może nie zostać skompilowany.
Istnieją dwa sposoby dołączania definicji typów z plików nagłówków w pliku IDL:
- Użyj dyrektywy import, aby uwzględnić typy danych zdefiniowane w pliku nagłówka. W przeciwieństwie do dyrektywy #include języka C, dyrektywa import pobiera tylko definicje typu i stałych i ignoruje prototypy procedur. Takie podejście będzie działać, o ile główny plik IDL nie odwołuje się do żadnych nieremotowalnych typów zdefiniowanych w pliku nagłówkowym.
- Utwórz pomocniczy plik IDL z fikcyjnym interfejsem, który dołącza pliki nagłówkowe. Następnie użyj dyrektywy import, aby uwzględnić plik pomocnika. W ten sposób w skompilowanych wycinkach pojawią się tylko typedefs. Na przykład:
//in helper.idl:
interface dummy
{
#include "kitchensink.h"
#include "system.h"
}
//in main.idl:
import "helper.idl";