Importowanie i eksportowanie

Symbole publiczne można zaimportować do aplikacji lub wyeksportować funkcje z biblioteki DLL przy użyciu dwóch metod:

  • Używanie pliku definicji modułu (.def) podczas kompilowania biblioteki DLL

  • Użyj słów kluczowych __declspec(dllimport) lub __declspec(dllexport) w definicji funkcji w głównej aplikacji

Używanie pliku .def

Plik definicji modułu (.def) to plik tekstowy zawierający co najmniej jedną instrukcję modułu, która opisuje różne atrybuty biblioteki DLL. Jeśli funkcje biblioteki DLL nie są używane __declspec(dllimport) lub __declspec(dllexport) eksportowane, biblioteka DLL wymaga pliku .def.

Pliki .def umożliwiają importowanie do aplikacji lub eksportowanie z biblioteki DLL.

Korzystanie z __declspec

Nie trzeba używać __declspec(dllimport) kodu do poprawnego kompilowania, ale umożliwia kompilatorowi generowanie lepszego kodu. Kompilator jest w stanie wygenerować lepszy kod, ponieważ może określić, czy funkcja istnieje w bibliotece DLL, czy nie, co umożliwia kompilatorowi tworzenie kodu, który pomija poziom pośredni, który normalnie występuje w wywołaniu funkcji, które przekroczyło granicę biblioteki DLL. Należy jednak użyć __declspec(dllimport) polecenia , aby zaimportować zmienne używane w dll.

W odpowiedniej sekcji __declspec(dllexport) EKSPORTY pliku .def nie jest wymagane. __declspec(dllexport) Dodano polecenie w celu zapewnienia łatwego sposobu eksportowania funkcji z pliku exe lub dll bez użycia pliku def.

Format przenośnego pliku wykonywalnego Win32 został zaprojektowany w celu zminimalizowania liczby stron, które należy dotknąć w celu naprawienia importu. W tym celu umieszcza wszystkie adresy importu dla dowolnego programu w jednym miejscu o nazwie Tabela adresów importu. Dzięki temu moduł ładujący może modyfikować tylko jedną lub dwie strony podczas uzyskiwania dostępu do tych importów.

Co chcesz zrobić?

Zobacz też

Tworzenie bibliotek DLL języka C/C++ w programie Visual Studio