Co to jest format pliku DEF?
Pliki .def są powiązane ze środowiskami programistycznymi Windows oraz OS/2, używanymi wraz z językami C, C++ i innymi językami kompilowanymi.
Pliki z rozszerzeniem .def przechowują dane w formacie czystego tekstu. Pliki .def są czasami nazywane plikami definicji modułów i służą do generowania bibliotek DLL. Plik .def przechowuje specjalny zestaw dyrektyw konsolidatora - instrukcji takich jak LIBRARY, EXPORTS, IMPORTS, SECTIONS, HEAPSIZE oraz STACKSIZE - używanych do definiowania kluczowych aspektów biblioteki DLL, w tym tego, które funkcje i symbole danych są udostępniane wywołującym oraz jakie numery porządkowe (ordinals) posiadają.
Plik jest przekazywany do konsolidatora w czasie budowania przy użyciu przełącznika /DEF:nazwa.def (MSVC) lub odpowiednich flag w MinGW/GCC i LLVM lld-link. Jest to element wejściowy kompilacji, a nie skompilowany artefakt; wynikowym plikiem binarnym jest .dll lub .exe.
DLL to plik biblioteki, który przechowuje kod wykonywalny i inne powiązane dane. Pliki DLL są wielokrotnego użytku - mogą być dostępne dla wielu aplikacji jednocześnie - i są ładowane dynamicznie w razie potrzeby. Pliki DLL są również sposobem na oszczędność miejsca na dysku i pamięci operacyjnej dzięki swojej dynamicznej naturze. Aktualizacja oprogramowania jest również łatwiejsza dzięki temu, że pliki DLL są współdzielone przez wiele aplikacji.
Nowoczesne kompilatory C/C++ pozwalają programistom oznaczać eksportowane symbole bezpośrednio w kodzie źródłowym za pomocą __declspec(dllexport), co w dużej mierze eliminuje potrzebę posiadania osobnego pliku .def. Jednak pliki .def pozostają obsługiwane przez obecny konsolidator MSVC (link.exe) oraz LLVM lld-link i nadal są preferowane, gdy wymagana jest stabilna, jawnie uporządkowana tabela eksportu.
Bezpieczeństwo
RYZYKO: LOWPlik definicji modułu .def to mały tekstowy plik budowania i jest bezpieczny do otwarcia i odczytu - nie może się uruchomić. Jedynym praktycznym ryzykiem jest edytowanie go w rzeczywistym projekcie: zmiana lub usunięcie wpisu EXPORTS zmienia publiczny interfejs biblioteki DLL i może zepsuć aplikacje wywołujące lub zmienić numery porządkowe eksportu, więc przed edycją należy zrozumieć wpływ na ABI. Jak w przypadku każdego pliku źródłowego, ufaj tylko plikom .def pochodzącym z kontrolowanych źródeł projektu.
Szczegóły formatu
w pigułce- Plik mapy Tibia / OTClient (.def) - Niektóre narzędzia do gier i edytor map Tibia używały .def do definicji map/spawnów - niepowiązane z konsolidatorami.
- Definicja danych ESRI ArcView / SmartWare - Starsze narzędzia bazodanowe i GIS (SmartWare, ArcView, DataFlex) zapisywały własne pliki schematów/definicji .def.
- Definicja animacji AniSprite / moduł DEFINITION Oberon-2 i Modula-2 - AniSprite przechowywał definicje animacji duszków w .def; Modula-2/Oberon używają .def dla publicznego interfejsu modułu.
Programy otwierające pliki DEF
Szczegóły techniczne
specyfikacja| Typ formatu | Tekstowy plik dyrektyw konsolidatora |
| Typ MIME | text/plain |
| Kodowanie znaków | ASCII / ANSI; typowo UTF-8 bez BOM |
| Sygnatura pliku (magic bytes) | Brak - identyfikowany przez słowa kluczowe takie jak LIBRARY, EXPORTS lub NAME na początku linii |
| Typowy rozmiar pliku | Poniżej 1 KB do kilku KB (jeden eksportowany symbol na linię) |
| Główna instrukcja: LIBRARY / NAME | Deklaruje nazwę modułu osadzoną w wewnętrznym nagłówku biblioteki DLL |
| Główna instrukcja: EXPORTS | Wymienia każdy symbol do udostępnienia, z opcjonalnymi flagami numeru porządkowego (@N), NONAME i DATA |
| Dodatkowe instrukcje | IMPORTS, SECTIONS (ustawianie atrybutów sekcji), HEAPSIZE, STACKSIZE |
| Przełącznik konsolidatora (MSVC) | /DEF:nazwapliku.def przekazywany do link.exe w czasie budowania |
| Obsługiwane łańcuchy narzędzi | MSVC link.exe, MinGW/GCC ld, LLVM lld-link, konsolidator Watcom, konsolidator Digital Mars |
| Artefakty wyjściowe | Kontroluje tabelę eksportu pliku .dll oraz generowaną wraz z nim bibliotekę importową (.lib) |
| Powiązane systemy operacyjne | Windows (główny); OS/2 (przestarzały); 16-bitowy DOS (przestarzały) |
| Nowoczesna alternatywa | __declspec(dllexport) w kodzie źródłowym; .def nadal preferowany dla stabilnych numerów porządkowych i przenośności narzędzi |
| Starsze słowa kluczowe 16-bitowe | Instrukcje atrybutów segmentów CODE i DATA obecne w 16-bitowych plikach DEF dla Windows/OS/2; przestarzałe w Win32 |
| Kompresja i szyfrowanie | Brak - zawsze przechowywany jako nieskompresowany, nieszyfrowany czysty tekst |
| Wydano | Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32) |
| Najnowsza wersja | Same statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link |
| Specyfikacja | learn.microsoft.com |
Konwersje DEF
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki DEF.