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 (o rozszerzeniu def) moduł Konstruując biblioteki DLL

  • Należy użyć słów kluczowych __declspec(dllimport) lub __declspec(dllexport) w definicji funkcji w aplikacji głównej

Przy użyciu pliku o rozszerzeniu def

Plik definicji modułów (o rozszerzeniu def) jest plikiem tekstowym zawierającym jedną lub więcej instrukcji modułu, które opisują różne atrybuty pliku dll.Jeśli nie używasz __declspec(dllimport) lub __declspec(dllexport) Aby wyeksportować funkcji DLL, biblioteka DLL wymaga pliku o rozszerzeniu def.

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

Przy użyciu __declspec

Visual C++ zastosowań __declspec(dllimport) i __declspec(dllexport) do zastąpienia __export słowa kluczowego poprzednio używane w 16-bitowych wersjach systemu Visual C++.

Nie trzeba używać __declspec(dllimport) dla kodu do kompilacji poprawnie, ale ten sposób pozwala kompilator do generowanie lepszego kodu.Kompilator jest w stanie wygenerować kod lepiej, ponieważ można sprawdzić, czy funkcja istnieje w bibliotece DLL, lub nie, co pozwala kompilator do tworzenia kodu, który przeskakuje poziom pośrednia, które byłyby normalnie obecne w wywołaniu funkcji, który przekroczył granicę DLL.Jednakże, należy użyć __declspec(dllimport) Aby zaimportować zmienne używane w bibliotece DLL.

Z sekcji wywozu właściwego DEF. plik __declspec(dllexport) nie jest wymagane.__declspec(dllexport) został dodany do stanowią łatwy sposób wyeksportować funkcji z pliku .exe lub .dll bez użycia pliku o rozszerzeniu def.

Format przenośny plik wykonywalny Win32 jest przeznaczony do zminimalizować liczbę stron, które musi stykać się naprawić przywozu.Aby to zrobić, to umieszcza wszystkie adresy importu dla każdego programu w jednym miejscu o nazwie Import Address Table.Dzięki temu program ładujący do modyfikowania tylko jednego lub dwóch stron podczas uzyskiwania dostępu do tego przywozu.

Co chcesz zrobić?

Zobacz też

Koncepcje

Biblioteki DLL w programie Visual C++