Udostępnij za pośrednictwem


/EXPORT (Eksportuje funkcję)

Eksportuje funkcję według nazwy lub porządkowych lub danych z programu.

Składnia

/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]

Uwagi

/EXPORT opcja określa funkcję lub element danych do wyeksportowania z programu, aby inne programy mogły wywołać funkcję lub użyć danych. Eksporty są zwykle definiowane w dll.

Entryname to nazwa funkcji lub elementu danych, który ma być używany przez program wywołujący. Porządkowy określa indeks do tabeli eksportów w zakresie od 1 do 65 535; jeśli nie określisz porządkowych, link przypisuje jeden. Słowo kluczowe NONAME eksportuje funkcję tylko jako porządkową bez nazwy wpisu.

Słowo kluczowe DATA określa, że wyeksportowany element jest elementem danych. Element danych w programie klienckim musi być zadeklarowany przy użyciu extern __declspec(dllimport).

Istnieją cztery metody eksportowania definicji wymienione w zalecanej kolejności użycia:

  1. __declspec(dllexport) w kodzie źródłowym

  2. Instrukcja EXPORT w pliku def

  3. /EXPORT specyfikacji w poleceniu LINK

  4. Dyrektywa komentarza w kodzie źródłowym formularza #pragma comment(linker, "/export: definition ").

Wszystkie te metody mogą być używane w tym samym programie. Gdy link kompiluje program zawierający eksporty, tworzy również bibliotekę importu, chyba że w kompilacji jest używany plik exp.

LINK używa ozdobionych formularzy identyfikatorów. Kompilator dekoruje identyfikator podczas tworzenia pliku obj. Jeśli parametr entryname jest określony do konsolidatora w nieukodowanym formularzu (jak pokazano w kodzie źródłowym), link próbuje dopasować nazwę. Jeśli nie można odnaleźć unikatowego dopasowania, link wysyła komunikat o błędzie. Użyj narzędzia DUMPBIN, aby uzyskać ozdobioną formę nazwy identyfikatora, gdy trzeba go określić w konsolidatorze.

Uwaga

Nie należy określać ozdobionej formy identyfikatorów języka C, które są zadeklarowane __cdecl lub __stdcall.

Jeśli musisz wyeksportować nieukodowaną nazwę funkcji i mieć różne eksporty w zależności od konfiguracji kompilacji (na przykład w kompilacjach 32-bitowych lub 64-bitowych), możesz użyć różnych plików DEF dla każdej konfiguracji. (Dyrektywy warunkowe preprocesora nie są dozwolone w plikach DEF). Alternatywnie można użyć #pragma comment dyrektywy przed deklaracją funkcji, jak pokazano tutaj, gdzie PlainFuncName jest nieukodowaną nazwą i _PlainFuncName@4 jest nazwą ozdobioną funkcji:

#pragma comment(linker, "/export:PlainFuncName=_PlainFuncName@4")
BOOL CALLBACK PlainFuncName( Things * lpParams)

Aby ustawić tę opcję konsolidatora w środowisku programowania Visual Studio

  1. Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).

  2. Wybierz stronę właściwości wiersza polecenia konsolidatora>konfiguracji.>

  3. Wprowadź opcję w polu Dodatkowe opcje .

Aby programowo ustawić tę opcję konsolidatora

Zobacz też

Dokumentacja konsolidatora MSVC
Opcje konsolidatora MSVC