Sdílet prostřednictvím


Import a export

Veřejné symboly můžete importovat do aplikace nebo exportovat funkce z knihovny DLL pomocí dvou metod:

  • Použití souboru definice modulu (.def) při sestavování knihovny DLL

  • Použití klíčových slov __declspec(dllimport) nebo __declspec(dllexport) v definici funkce v hlavní aplikaci

Použití souboru .def

Soubor definice modulu (.def) je textový soubor obsahující jeden nebo více příkazů modulu, které popisují různé atributy knihovny DLL. Pokud nepoužíváte __declspec(dllimport) nebo __declspec(dllexport) exportujete funkce knihovny DLL, knihovna DLL vyžaduje soubor .def.

Soubory .def můžete použít k importu do aplikace nebo k exportu z knihovny DLL.

Použití __declspec

Abyste mohli kód správně zkompilovat, nemusíte ho používat __declspec(dllimport) , ale tím umožníte kompilátoru vygenerovat lepší kód. Kompilátor dokáže generovat lepší kód, protože může určit, zda funkce existuje v knihovně DLL, nebo ne, což kompilátoru umožňuje vytvořit kód, který přeskočí úroveň nepřímých volání, které by normálně existovalo ve volání funkce, které překročilo hranici knihovny DLL. Musíte však použít __declspec(dllimport) k importu proměnných použitých v knihovně DLL.

Při správné části __declspec(dllexport) EXPORT SOUBORU .def není nutné. __declspec(dllexport) byla přidána, aby bylo možné snadno exportovat funkce z .exe nebo .dll souboru bez použití souboru .def.

Formát Win32 Portable Spustitelný soubor je navržený tak, aby minimalizoval počet stránek, které musí být při opravě importů dotykové. Uděláte to tak, že umístí všechny adresy importu pro jakýkoli program na jednom místě označované jako Tabulka importu adres. Díky tomu může zavaděč upravovat při přístupu k těmto importům jenom jednu nebo dvě stránky.

Co chcete udělat?

Viz také

Vytváření knihoven DLL jazyka C/C++ v sadě Visual Studio