Hva er DEF-filformatet?
.def-filer er assosiert med utviklingsmiljøer for Windows og OS/2, og brukes sammen med C, C++ og andre kompilerte språk.
Filer med filendelsen .def lagrer data i rent tekstformat. .def-filer blir noen ganger referert til som moduldefinisjonsfiler og brukes til å generere DLL-biblioteker. En .def-fil lagrer et spesielt sett med linker-direktiver - utsagn som LIBRARY, EXPORTS, IMPORTS, SECTIONS, HEAPSIZE og STACKSIZE - som brukes til å definere sentrale aspekter ved et DLL-bibliotek, inkludert hvilke funksjoner og datasymboler som er eksponert for kallere og hvilke ordinalnumre de bærer.
Filen sendes til linkeren ved bygging ved hjelp av bryteren /DEF:navn.def (MSVC) eller tilsvarende flagg i MinGW/GCC og LLVM lld-link. Det er en bygg-input, ikke et kompilert produkt; den resulterende binærfilen er en .dll eller .exe.
En DLL er en biblioteksfil som lagrer kjørbar kode og andre relaterte data. DLL-filer er gjenbrukbare - de kan aksesseres av flere applikasjoner samtidig - og lastes dynamisk ved behov. DLL-filer er også et middel for å spare diskplass og arbeidsminne på grunn av deres dynamiske natur. Oppdatering av programvare er også enklere fordi DLL-filer deles mellom flere applikasjoner.
Moderne C/C++-kompilatorer lar utviklere markere eksporterte symboler direkte i kildekoden ved hjelp av __declspec(dllexport), noe som i stor grad reduserer behovet for en separat .def-fil. Imidlertid støttes .def-filer fortsatt av den nåværende MSVC-linkeren (link.exe) og LLVM lld-link, og foretrekkes fortsatt når en stabil, eksplisitt sortert eksporttabell er nødvendig.
Sikkerhet og trygghet
RISIKO: LOWEn moduldefinisjonsfil (.def) er en liten tekstfil for bygging og er trygg å åpne og lese - den kan ikke kjøres. Den eneste praktiske risikoen er å redigere den i et reelt prosjekt: endring eller fjerning av en EXPORTS-oppføring endrer DLL-ens offentlige grensesnitt og kan ødelegge for kallere eller endre eksport-ordinaler, så forstå ABI-konsekvensene før redigering. Som med alle kildekodefiler, stol kun på .def-filer fra prosjektkilder du kontrollerer.
Formatdetaljer
i et nøtteskall- Tibia / OTClient kartfil (.def) - Noen spillverktøy og Tibia-karteditoren brukte .def for kart/spawn-definisjoner - urelatert til linkere.
- ESRI ArcView / SmartWare datadefinisjon - Eldre database- og GIS-verktøy (SmartWare, ArcView, DataFlex) skrev egne .def-skjema/definisjonsfiler.
- AniSprite animasjonsdefinisjon / Oberon-2 & Modula-2 DEFINITION-modul - AniSprite lagret sprite-animasjonsdefinisjoner i .def; Modula-2/Oberon bruker .def for en moduls offentlige grensesnitt.
Programmer som åpner DEF-filer
Tekniske detaljer
dyp spesifikasjon| Format-type | Linker-direktivfil i rent tekstformat |
| MIME-type | text/plain |
| Tegnkoding | ASCII / ANSI; UTF-8 uten BOM er typisk |
| Filsignatur (magic bytes) | Ingen - identifiseres av nøkkelord som LIBRARY, EXPORTS eller NAME i starten av linjer |
| Typisk filstørrelse | Under 1 KB til noen få KB (ett eksportert symbol per linje) |
| Kjerneutsagn: LIBRARY / NAME | Deklarerer modulnavnet som er innebygd i DLL-ens interne hode |
| Kjerneutsagn: EXPORTS | Lister opp hvert symbol som skal eksponeres, med valgfrie flagg for ordinal (@N), NONAME og DATA |
| Ytterligere utsagn | IMPORTS, SECTIONS (angi seksjonsattributter), HEAPSIZE, STACKSIZE |
| Linker-bryter (MSVC) | /DEF:filnavn.def sendt til link.exe ved bygging |
| Støttede verktøykjeder | MSVC link.exe, MinGW/GCC ld, LLVM lld-link, Watcom linker, Digital Mars linker |
| Resultatprodukter | Kontrollerer eksporttabellen til en .dll og importbiblioteket (.lib) som genereres ved siden av |
| Assosierte operativsystemer | Windows (primær); OS/2 (legacy); 16-bit DOS (legacy) |
| Moderne alternativ | __declspec(dllexport) i kildekoden; .def foretrekkes fortsatt for stabile eksport-ordinaler og portabilitet mellom verktøy |
| Eldre 16-bit nøkkelord | CODE- og DATA-segmentattributtutsagn finnes i 16-bit Windows/OS/2 DEF-filer; foreldet under Win32 |
| Komprimering og kryptering | Ingen - lagres alltid som ukomprimert, ukryptert ren tekst |
| Utgitt | Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32) |
| Siste versjon | Same statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link |
| Spesifikasjon | learn.microsoft.com |
DEF-konverteringer
Spørsmål og svar fra fellesskapet
spurt av brukereIngen spørsmål ennå - vær den første til å spørre om DEF-filer.