Share via


/EXPORT (export funkce)

Exportuje funkci podle názvu nebo pořadového nebo datového typu z programu.

Syntaxe

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

Poznámky

Možnost /EXPORT určuje funkci nebo datovou položku, která se má exportovat z programu, aby ostatní programy mohly funkci volat nebo používat data. Exporty jsou obvykle definovány v knihovně DLL.

Název položky je název funkce nebo datové položky, protože se má používat volajícím programem. pořadové číslo určuje index do tabulky exportů v rozsahu 1 až 65 535. Pokud nezadáte pořadové číslo, funkce LINK ho přiřadí. Klíčové slovo NONAME exportuje funkci pouze jako řadový název bez názvu položky.

Klíčové slovo DATA určuje, že exportovaná položka je datová položka. Datová položka v klientském programu musí být deklarována pomocí extern __declspec(dllimport).

Existují čtyři metody pro export definice uvedené v doporučeném pořadí použití:

  1. __declspec(dllexport) ve zdrojovém kódu

  2. Příkaz EXPORT v souboru .def

  3. Specifikace /EXPORT v příkazu LINK

  4. Direktiva komentáře ve zdrojovém kódu formuláře #pragma comment(linker, "/export: definition ").

Všechny tyto metody lze použít ve stejném programu. Když LINK sestaví program, který obsahuje exporty, vytvoří také knihovnu importu, pokud se v sestavení nepoužije soubor .exp.

LINK používá zdobené tvary identifikátorů. Kompilátor při vytváření souboru .obj vyzdobí identifikátor. Pokud je pro linker zadaný v nekódovaném formuláři (jak se zobrazí ve zdrojovém kódu), funkce LINK se pokusí shodovat s názvem. Pokud nemůže najít jedinečnou shodu, link vydá chybovou zprávu. Pomocí nástroje DUMPBIN získáte dekorovaný název formuláře identifikátoru, když ho potřebujete zadat do linkeru.

Poznámka

Nezadávejte zdobenou formu identifikátorů jazyka C, které jsou deklarovány __cdecl nebo __stdcall.

Pokud potřebujete exportovat neověřený název funkce a mít různé exporty v závislosti na konfiguraci sestavení (například v 32bitových nebo 64bitových buildech), můžete pro každou konfiguraci použít různé soubory DEF. (Podmíněné direktivy preprocesoru nejsou povoleny v souborech DEF.) Jako alternativu můžete použít direktivu #pragma comment před deklaraci funkce, jak je znázorněno zde, kde PlainFuncName je nezakódovaný název a _PlainFuncName@4 je dekorovaný název funkce:

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

Nastavení tohoto parametru linkeru ve vývojovém prostředí sady Visual Studio

  1. Otevřete dialogové okno Stránky vlastností projektu. Podrobnosti najdete v tématu Nastavení kompilátoru C++ a vlastností sestavení v sadě Visual Studio.

  2. Vyberte stránku vlastností linkeru>Vlastností konfigurace>příkazového řádku.

  3. Do pole Další možnosti zadejte možnost.

Programové nastavení tohoto parametru linkeru

Viz také

Referenční zdroje k linkeru MSVC
Možnosti linkeru MSVC