Che cos'è il formato di file DEF?
I file .def sono associati agli ambienti di sviluppo Windows e OS/2, utilizzati insieme a C, C++ e altri linguaggi compilati.
I file con estensione .def memorizzano dati in formato testo semplice. I file .def sono talvolta chiamati file di definizione del modulo e vengono utilizzati per generare librerie DLL. Un file .def memorizza un set speciale di direttive per il linker - istruzioni come LIBRARY, EXPORTS, IMPORTS, SECTIONS, HEAPSIZE e STACKSIZE - utilizzate per definire aspetti chiave di una libreria DLL, inclusi quali simboli di funzioni e dati sono esposti ai chiamanti e quali numeri ordinali portano.
Il file viene passato al linker al momento della compilazione utilizzando lo switch /DEF:nome.def (MSVC) o flag equivalenti in MinGW/GCC e LLVM lld-link. È un input di compilazione, non un artefatto compilato; il binario risultante è un .dll o .exe.
Una DLL è un file di libreria che memorizza codice eseguibile e altri dati correlati. I file DLL sono riutilizzabili - possono essere consultati da più applicazioni contemporaneamente - e caricati dinamicamente quando necessario. I file DLL sono anche un mezzo per risparmiare spazio su disco e memoria operativa grazie alla loro natura dinamica. L'aggiornamento del software è inoltre più semplice grazie al fatto che i file DLL sono condivisi tra più applicazioni.
I moderni compilatori C/C++ consentono agli sviluppatori di contrassegnare i simboli esportati direttamente nel codice sorgente utilizzando __declspec(dllexport), riducendo ampiamente la necessità di un file .def separato. Tuttavia, i file .def rimangono supportati dall'attuale linker MSVC (link.exe) e da LLVM lld-link, e sono ancora preferiti quando è richiesta una tabella di esportazione stabile e ordinata esplicitamente.
Sicurezza e incolumità
RISCHIO: LOWUn file .def di definizione del modulo è un piccolo file di build in testo semplice ed è sicuro da aprire e leggere - non può essere eseguito. L'unico rischio pratico è la modifica in un progetto reale: cambiare o rimuovere una voce EXPORTS altera l'interfaccia pubblica della DLL e può interrompere i chiamanti o cambiare gli ordinali di esportazione, quindi è bene comprendere l'impatto ABI prima di modificare. Come per ogni file sorgente, fidati solo dei file .def provenienti da sorgenti di progetto che controlli.
Dettagli del formato
in sintesi- File mappa Tibia / OTClient (.def) - Alcuni strumenti di gioco e l'editor di mappe di Tibia utilizzavano .def per le definizioni di mappe/spawn - non correlato ai linker.
- Definizione dati ESRI ArcView / SmartWare - Vecchi strumenti di database e GIS (SmartWare, ArcView, DataFlex) scrivevano i propri file di schema/definizione .def.
- Definizione animazione AniSprite / Modulo DEFINITION Oberon-2 & Modula-2 - AniSprite memorizzava le definizioni delle animazioni sprite in .def; Modula-2/Oberon usano .def per l'interfaccia pubblica di un modulo.
Programmi che aprono file DEF
Dettagli tecnici
specifiche approfondite| Tipo di formato | File di direttive per il linker in testo semplice |
| Tipo MIME | text/plain |
| Codifica dei caratteri | ASCII / ANSI; UTF-8 senza BOM è tipico |
| Firma del file (magic bytes) | Nessuna - identificato da parole chiave come LIBRARY, EXPORTS o NAME all'inizio delle righe |
| Dimensione tipica del file | Meno di 1 KB fino a pochi KB (un simbolo esportato per riga) |
| Istruzione principale: LIBRARY / NAME | Dichiara il nome del modulo incorporato nell'intestazione interna della DLL |
| Istruzione principale: EXPORTS | Elenca ogni simbolo da esporre, con flag opzionali per ordinale (@N), NONAME e DATA |
| Istruzioni aggiuntive | IMPORTS, SECTIONS (imposta attributi di sezione), HEAPSIZE, STACKSIZE |
| Switch del linker (MSVC) | /DEF:nomefile.def passato a link.exe al momento della compilazione |
| Toolchain supportate | MSVC link.exe, MinGW/GCC ld, LLVM lld-link, linker Watcom, linker Digital Mars |
| Artefatti di output | Controlla la tabella di esportazione di un .dll e la libreria di importazione (.lib) generata insieme ad esso |
| Sistemi operativi associati | Windows (principale); OS/2 (legacy); DOS a 16 bit (legacy) |
| Alternativa moderna | __declspec(dllexport) nel codice sorgente; .def ancora preferito per ordinali di esportazione stabili e portabilità della toolchain |
| Parole chiave legacy a 16 bit | Istruzioni per gli attributi dei segmenti CODE e DATA presenti nei file DEF di Windows/OS/2 a 16 bit; obsolete in Win32 |
| Compressione e crittografia | Nessuna - sempre memorizzato come testo semplice non compresso e non crittografato |
| Rilasciato | Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32) |
| Ultima versione | Same statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link |
| Specifica | learn.microsoft.com |
Conversioni DEF
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file DEF.