Vad är filformatet DEF?
.def-filer är associerade med utvecklingsmiljöer för Windows och OS/2, och används tillsammans med C, C++ och andra kompilerade språk.
Filer med filtillägget .def lagrar data i klartextformat. .def-filer kallas ibland för moduldefinitionsfiler och används för att generera DLL-bibliotek. En .def-fil lagrar en speciell uppsättning länkardirektiv - instruktioner som LIBRARY, EXPORTS, IMPORTS, SECTIONS, HEAPSIZE och STACKSIZE - som används för att definiera nyckelaspekter av ett DLL-bibliotek, inklusive vilka funktioner och datasymboler som exponeras för anropare och vilka ordningsnummer (ordinals) de bär.
Filen skickas till länkaren vid byggtillfället med växeln /DEF:name.def (MSVC) eller motsvarande flaggor i MinGW/GCC och LLVM lld-link. Det är en byggindata, inte en kompilerad artefakt; den resulterande binären är en .dll eller .exe.
En DLL är en biblioteksfil som lagrar exekverbar kod och annan relaterad data. DLL-filer är återanvändbara - de kan nås av flera applikationer samtidigt - och laddas dynamiskt vid behov. DLL-filer är också ett sätt att spara diskutrymme och arbetsminne tack vare sin dynamiska natur. Uppdatering av programvara underlättas också av det faktum att DLL-filer delas mellan flera applikationer.
Moderna C/C++-kompilatorer tillåter utvecklare att markera exporterade symboler direkt i källkoden med __declspec(dllexport), vilket i hög grad minskar behovet av en separat .def-fil. Men .def-filer stöds fortfarande av den nuvarande MSVC-länkaren (link.exe) och LLVM lld-link, och föredras fortfarande när en stabil, explicit ordnad exporttabell krävs.
Säkerhet & trygghet
RISK: LOWEn moduldefinitionsfil (.def) är en liten byggfil i klartext och är säker att öppna och läsa - den kan inte exekveras. Den enda praktiska risken är att redigera den i ett riktigt projekt: att ändra eller ta bort en EXPORTS-post ändrar DLL-filens publika gränssnitt och kan förstöra för anropare eller ändra export-ordinals, så förstå ABI-påverkan innan du redigerar. Som med alla källfiler bör du endast lita på .def-filer från projektkällor du kontrollerar.
Formatdetaljer
i ett nötskal- Tibia / OTClient kartfil (.def) - Vissa spelverktyg och Tibia-kartredigeraren använde .def för kart-/spawn-definitioner - orelaterat till länkare.
- ESRI ArcView / SmartWare datadefinition - Äldre databas- och GIS-verktyg (SmartWare, ArcView, DataFlex) skrev egna .def-schema/definitionsfiler.
- AniSprite animationsdefinition / Oberon-2 & Modula-2 DEFINITION-modul - AniSprite lagrade sprite-animationsdefinitioner i .def; Modula-2/Oberon använder .def för en moduls publika gränssnitt.
Program som öppnar DEF-filer
Tekniska detaljer
djup specifikation| Formattyp | Länkardirektivfil i klartext |
| MIME-typ | text/plain |
| Teckenkodning | ASCII / ANSI; UTF-8 utan BOM är typiskt |
| Filsignatur (magic bytes) | Ingen - identifieras av nyckelord som LIBRARY, EXPORTS eller NAME i början av rader |
| Typisk filstorlek | Under 1 KB till några KB (en exporterad symbol per rad) |
| Kärninstruktion: LIBRARY / NAME | Deklarerar modulnamnet som bäddas in i DLL-filens interna huvud |
| Kärninstruktion: EXPORTS | Listar varje symbol som ska exponeras, med valfria flaggor för ordinal (@N), NONAME och DATA |
| Ytterligare instruktioner | IMPORTS, SECTIONS (ställ in sektionsattribut), HEAPSIZE, STACKSIZE |
| Länkarväxel (MSVC) | /DEF:filename.def skickas till link.exe vid byggtillfället |
| Verktygskedjor som stöds | MSVC link.exe, MinGW/GCC ld, LLVM lld-link, Watcom linker, Digital Mars linker |
| Utdata-artefakter | Styr exporttabellen för en .dll och det importbibliotek (.lib) som genereras tillsammans med den |
| Associerade operativsystem | Windows (primär); OS/2 (föråldrad); 16-bitars DOS (föråldrad) |
| Modernt alternativ | __declspec(dllexport) i källkoden; .def föredras fortfarande för stabila export-ordinals och portabilitet mellan verktygskedjor |
| Äldre 16-bitars nyckelord | CODE- och DATA-segmentattributinstruktioner som finns i 16-bitars Windows/OS/2 DEF-filer; föråldrade under Win32 |
| Komprimering och kryptering | Ingen - lagras alltid som okomprimerad, okrypterad klartext |
| Släppt | Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32) |
| Senaste version | Same statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link |
| Specifikation | learn.microsoft.com |
DEF-konverteringar
Frågor & svar
frågat av användareInga frågor än - bli den första att fråga om DEF-filer.