Udostępnij za pośrednictwem


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:

  1. Opcję __declspec(dllexport) słowa kluczowego w kodzie źródłowym

  2. Wywóz instrukcji w pliku .def

  3. /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.

Zobacz też

Informacje

Instrukcje definicji modułu zasad