Udostępnij za pośrednictwem


Importowanie i eksportowanie

Można zaimportować symbole publicznych do aplikacji lub wyeksportować funkcji z biblioteki DLL przy użyciu dwóch metod:

  • Użyj pliku definicji (DEF) moduł Konstruując biblioteki DLL

  • Użyj słowa kluczowe __declspec(dllimport) lub opcję __declspec(dllexport) w definicji funkcji w aplikacji głównej

Przy użyciu pliku .def

Plik definicji modułów (DEF) jest plikiem tekstowym zawierającym instrukcje modułu, które opisują różne atrybuty biblioteki DLL.Jeśli nie używasz __declspec(dllimport) lub opcję __declspec(dllexport) do eksportowania funkcji DLL, biblioteka DLL wymaga pliku .def.

Można korzystać z plików .def zaimportować do aplikacji lub wyeksportować z biblioteki DLL.

Przy użyciu __declspec

Visual C++ zastosowań __declspec(dllimport) i opcję __declspec(dllexport) do zastąpienia __export poprzednio używane w 16-bitowe wersje programu Visual C++ słowo kluczowe.

Nie trzeba używać __declspec(dllimport) dla kodu skompilować poprawnie, ale czyniąc umożliwia generowanie lepszego kodu kompilatora.Kompilator jest w stanie wygenerować kod lepsze, ponieważ można ustalić, czy funkcja istnieje w bibliotece DLL lub nie, który umożliwia kompilatora do tworzenia kodu, która pomija poziom pośrednia, które byłyby normalnie obecne w wywołaniu funkcji, która przekroczenia granicy DLL.Jednakże, należy użyć __declspec(dllimport) do importowania zmiennych używanych w bibliotece DLL.

Do wywozu sekcji pliku .def właściwego opcję __declspec(dllexport) nie jest wymagane.opcję __declspec(dllexport) został dodany do łatwy sposób eksportowania funkcji z pliku .exe lub .dll, bez używania pliku .def.

Format Win32 Portable Executable jest przeznaczony do zminimalizować liczbę stron, które musi stykać się ustalenie przywozu.Aby to zrobić, umieszcza w jednym miejscu o nazwie tabela adres importować wszystkie adresy importu dla dowolnego programu.Dzięki temu program ładujący do modyfikowania tylko jedną lub dwie strony podczas uzyskiwania dostępu do tego przywozu.

Co chcesz zrobić?

Zobacz też

Koncepcje

Biblioteki DLL w programie Visual C++