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 funkcję 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