Was ist das DEF-Dateiformat?
.def-Dateien werden mit Windows- und OS/2-Entwicklungsumgebungen assoziiert und zusammen mit C, C++ und anderen kompilierten Sprachen verwendet.
Dateien mit der Endung .def speichern Daten im Klartextformat. .def-Dateien werden manchmal als Moduldefinitionsdateien bezeichnet und zur Erstellung von DLL-Bibliotheken verwendet. Eine .def-Datei speichert einen speziellen Satz von Linker-Direktiven - Anweisungen wie LIBRARY, EXPORTS, IMPORTS, SECTIONS, HEAPSIZE und STACKSIZE -, die dazu dienen, Schlüsselaspekte einer DLL-Bibliothek zu definieren, einschließlich der Frage, welche Funktionen und Datensymbole für Aufrufer offengelegt werden und welche Ordinalzahlen sie tragen.
Die Datei wird zur Build-Zeit mit dem Schalter /DEF:name.def (MSVC) oder entsprechenden Flags in MinGW/GCC und LLVM lld-link an den Linker übergeben. Es handelt sich um eine Build-Eingabe, nicht um ein kompiliertes Artefakt; das resultierende Binärformat ist eine .dll oder .exe.
Eine DLL ist eine Bibliotheksdatei, die ausführbaren Code und andere zugehörige Daten speichert. DLL-Dateien sind wiederverwendbar - sie können von mehreren Anwendungen gleichzeitig aufgerufen werden - und werden bei Bedarf dynamisch geladen. DLL-Dateien sind aufgrund ihrer dynamischen Natur auch ein Mittel zur Einsparung von Festplattenplatz und Arbeitsspeicher. Die Aktualisierung von Software ist ebenfalls einfacher, da DLL-Dateien von mehreren Anwendungen gemeinsam genutzt werden.
Moderne C/C++-Compiler ermöglichen es Entwicklern, exportierte Symbole direkt im Quellcode mit __declspec(dllexport) zu markieren, was die Notwendigkeit einer separaten .def-Datei weitgehend reduziert. Dennoch werden .def-Dateien weiterhin vom aktuellen MSVC-Linker (link.exe) und LLVM lld-link unterstützt und werden immer noch bevorzugt, wenn eine stabile, explizit geordnete Exporttabelle erforderlich ist.
Sicherheit
RISIKO: LOWEine Moduldefinitionsdatei (.def) ist eine winzige Klartext-Build-Datei und kann sicher geöffnet und gelesen werden - sie kann nicht ausgeführt werden. Das einzige praktische Risiko besteht darin, sie in einem echten Projekt zu bearbeiten: Das Ändern oder Entfernen eines EXPORTS-Eintrags verändert die öffentliche Schnittstelle der DLL und kann Aufrufer beschädigen oder Export-Ordinalzahlen ändern. Verstehen Sie daher die ABI-Auswirkungen vor der Bearbeitung. Vertrauen Sie .def-Dateien wie jeder Quelldatei nur aus Projektquellen, die Sie kontrollieren.
Formatdetails
kurz gefasst- Tibia / OTClient Kartendatei (.def) - Einige Spiele-Tools und der Tibia-Karteneditor verwendeten .def für Karten-/Spawn-Definitionen - nicht verwandt mit Linkern.
- ESRI ArcView / SmartWare Datendefinition - Ältere Datenbank- und GIS-Tools (SmartWare, ArcView, DataFlex) schrieben eigene .def-Schema-/Definitionsdateien.
- AniSprite Animationsdefinition / Oberon-2 & Modula-2 DEFINITION Modul - AniSprite speicherte Sprite-Animationsdefinitionen in .def; Modula-2/Oberon verwenden .def für die öffentliche Schnittstelle eines Moduls.
Programme zum Öffnen von DEF-Dateien
Technische Details
technische Spezifikation| Format-Typ | Klartext-Linker-Direktivendatei |
| MIME-Typ | text/plain |
| Zeichenkodierung | ASCII / ANSI; UTF-8 ohne BOM ist typisch |
| Dateisignatur (Magic Bytes) | Keine - identifiziert durch Schlüsselwörter wie LIBRARY, EXPORTS oder NAME am Zeilenanfang |
| Typische Dateigröße | Unter 1 KB bis zu wenigen KB (ein exportiertes Symbol pro Zeile) |
| Kernanweisung: LIBRARY / NAME | Deklariert den Modulnamen, der im internen Header der DLL eingebettet ist |
| Kernanweisung: EXPORTS | Listet jedes zu exportierende Symbol auf, mit optionalen Flags für Ordinalzahlen (@N), NONAME und DATA |
| Zusätzliche Anweisungen | IMPORTS, SECTIONS (setzt Sektionsattribute), HEAPSIZE, STACKSIZE |
| Linker-Schalter (MSVC) | /DEF:dateiname.def wird zur Build-Zeit an link.exe übergeben |
| Unterstützte Toolchains | MSVC link.exe, MinGW/GCC ld, LLVM lld-link, Watcom-Linker, Digital Mars-Linker |
| Ausgabeartefakte | Steuert die Exporttabelle einer .dll und die daneben generierte Importbibliothek (.lib) |
| Zugehörige Betriebssysteme | Windows (primär); OS/2 (legacy); 16-Bit DOS (legacy) |
| Moderne Alternative | __declspec(dllexport) im Quellcode; .def wird weiterhin für stabile Export-Ordinalzahlen und Toolchain-Portabilität bevorzugt |
| Legacy 16-Bit Schlüsselwörter | CODE- und DATA-Segmentattribut-Anweisungen in 16-Bit Windows/OS/2 DEF-Dateien; unter Win32 veraltet |
| Kompression und Verschlüsselung | Keine - immer als unkomprimierter, unverschlüsselter Klartext gespeichert |
| Veröffentlicht | Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32) |
| Neueste Version | Same statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link |
| Spezifikation | learn.microsoft.com |
DEF-Konvertierungen
Community Q&A
von Nutzern gefragtNoch keine Fragen - stellen Sie die erste Frage zu DEF-Dateien.