WYWÓZ
Wprowadza sekcji jednego lub więcej definitions eksportowanych funkcji lub danych.Każda definicja musi być w osobnym wierszu.
EXPORTS
definitions
Uwagi
Wywóz słowa kluczowego mogą być na tym samym wierszu co pierwsza definicji w poprzednim wierszu.Pliku .def może zawierać jeden lub więcej wywóz instrukcji.
Składnia wywóz definitions jest:
entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA]
EntryName jest nazwą funkcji lub zmiennej mają zostać wyeksportowane.Jest to wymagane.Jeśli nazwa eksportowania różni się od nazwy w bibliotece DLL, należy określić nazwę wywozu w bibliotece DLL z internalname.Na przykład, jeśli biblioteka DLL eksportuje funkcji func1() i ma on być użyty jako func2(), to należy określić:
EXPORTS
func2=func1
@ordinal pozwala na określenie, że numer, a nie nazwy funkcji, przejdzie do biblioteki DLL eksportowania tabeli.Może to ułatwić minimalizowanie rozmiaru biblioteki DLL..LIB plik będzie zawierał mapowania między porządkową i funkcji, która pozwala na używanie nazwy funkcji, jak zwykle w projektach, których użycie biblioteki DLL.
Opcjonalny bez nazwy słów kluczowych pozwala eksportować tylko porządkową i zmniejszyć rozmiar tabeli wywozu w wynikowym pliku DLL.Jednakże jeśli chcesz użyć GetProcAddress w bibliotece DLL, należy znać liczba porządkowa, ponieważ nazwa nie będą obowiązywać.
Opcjonalne słowa kluczowego prywatnego zapobiega entryname z umieszczeniem w bibliotece przywóz generowanych przez łącze.Nie ma wpływu na wywóz na obrazie także generowane przez łącze.
Opcjonalne słowa kluczowego danych Określa, że wywóz danych, a nie kodu.Na przykład można eksportować zmiennej danych w następujący sposób:
EXPORTS
i DATA
Podczas używania prywatnego i danych na tym samym wywóz prywatnych musi poprzedzać danych.
Istnieją trzy metody Eksportowanie definicji, wymienionych w zalecanej kolejności stosowania:
Opcję __declspec(dllexport) słowa kluczowego w kodzie źródłowym
Wywóz instrukcji w pliku .def
/EXPORT specyfikacji w poleceniu łącza
Wszystkie trzy metody, można w tym samym programie.Gdy łącze buduje program, który zawiera wywozu, tworzy również Importuj biblioteki, chyba że w kompilacji używany jest plik .exp.
Poniżej przedstawiono przykład sekcji EXPORTS:
EXPORTS
DllCanUnloadNow @1 PRIVATE DATA
DllWindowName = Name DATA
DllGetClassObject @4 NONAME PRIVATE
DllRegisterServer @7
DllUnregisterServer
Należy zauważyć, że podczas eksportowania zmiennej z biblioteki DLL z pliku .def, nie trzeba określić opcję __declspec(dllexport) w zmiennej.Jednak w pliku, który używa biblioteki DLL, należy nadal używać __declspec(dllimport) na zgłoszeniu danych.