.DEF

File DEF

Module-Definition File
Fai una domanda
RISPOSTA RAPIDA

Un file DEF è un file di direttive per il linker in formato testo semplice - più comunemente un elenco EXPORTS che indica al linker di Windows quali funzioni una DLL deve esporre. Può essere aperto in qualsiasi editor di testo come VS Code o Notepad++. Si tratta di un input di compilazione passato al linker con /DEF:nome.def, non di un programma da eseguire.

Sviluppatore: Microsoft (Windows toolchain; also used by MinGW/GCC, Watcom, Digital Mars) Categoria: File di sviluppo MIME: text/plain
SI APRE SU Windows macOS Linux
Correlati: .DO · .MD · .HEX · .XSD

In questa pagina

19k+ estensioni indicizzate
Ultima revisione Jul 13, 2026

Non sei sicuro di cosa sia il tuo file?

Trascina qualsiasi file nel nostro identificatore - leggiamo solo i primi byte per dare un nome al formato.

Identifica un file

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: LOW

Un 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
NOME COMPLETOModule-Definition Fileanche noto come Module Definition File, DEF file
SVILUPPATOREMicrosoft (Windows toolchain; also used by MinGW/GCC, Watcom, Digital Mars)dal Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32)
TIPO MIMEtext/plain
TIPOFile di direttive per il linker in testo semplice (istruzioni: LIBRARY, EXPORTS, IMPORTS...)
Questa estensione è usata anche da…
  • 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

Windows4 apps
Windows Notepad Integrato Apri con > Blocco note per una lettura veloce di un piccolo .def; manca l'aiuto per la sintassi.
Notepad Open-source Tasto destro > Modifica con Notepad++ per visualizzare/modificare le direttive del linker con i numeri di riga.
Visual Studio Code Gratuito Apri il .def per leggere/modificare l'elenco EXPORTS come testo semplice. La migliore scelta gratuita generica.
Visual Studio (MSVC) Freemium Aggiungi il .def a un progetto e passalo tramite Linker > Input > Module Definition File (/DEF). Visual Studio lo apre anche come testo per la modifica.
macOS1 app
Visual Studio Code Gratuito Apri il .def per leggere/modificare l'elenco EXPORTS come testo semplice. La migliore scelta gratuita generica.
Linux2 apps
nano / vim Open-source Modifica nel terminale durante la compilazione incrociata di DLL Windows (MinGW-w64/LLVM consumano .def tramite -Wl,--def o /DEF).
Visual Studio Code Gratuito Apri il .def per leggere/modificare l'elenco EXPORTS come testo semplice. La migliore scelta gratuita generica.

Dettagli tecnici

specifiche approfondite
Tipo di formatoFile di direttive per il linker in testo semplice
Tipo MIMEtext/plain
Codifica dei caratteriASCII / 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 fileMeno di 1 KB fino a pochi KB (un simbolo esportato per riga)
Istruzione principale: LIBRARY / NAMEDichiara il nome del modulo incorporato nell'intestazione interna della DLL
Istruzione principale: EXPORTSElenca ogni simbolo da esporre, con flag opzionali per ordinale (@N), NONAME e DATA
Istruzioni aggiuntiveIMPORTS, SECTIONS (imposta attributi di sezione), HEAPSIZE, STACKSIZE
Switch del linker (MSVC)/DEF:nomefile.def passato a link.exe al momento della compilazione
Toolchain supportateMSVC link.exe, MinGW/GCC ld, LLVM lld-link, linker Watcom, linker Digital Mars
Artefatti di outputControlla la tabella di esportazione di un .dll e la libreria di importazione (.lib) generata insieme ad esso
Sistemi operativi associatiWindows (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 bitIstruzioni per gli attributi dei segmenti CODE e DATA presenti nei file DEF di Windows/OS/2 a 16 bit; obsolete in Win32
Compressione e crittografiaNessuna - sempre memorizzato come testo semplice non compresso e non crittografato
RilasciatoWindows / OS/2 development, late 1980s-1990s (16-bit, then Win32)
Ultima versioneSame statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link
Specificalearn.microsoft.com

Conversioni DEF

Domande e risposte della community

chiesto dagli utenti
Fai una domanda veloce
Ottieni aiuto da persone che lavorano con i file DEF. Sii specifico - includi il tuo sistema e la versione del software.
Nessun account necessario · risposte solitamente entro un giorno

Ancora nessuna domanda - sii il primo a chiedere informazioni sui file DEF.

Domande frequenti

Cos'è un file .def nella programmazione?
Un file di definizione del modulo: un elenco in testo semplice di direttive per il linker - principalmente una sezione EXPORTS che nomina le funzioni che una DLL dovrebbe esporre. Lo si passa al linker (link /DEF:nome.def) durante la creazione di una DLL o di un EXE di Windows.
Come apro un file .def?
È testo semplice - aprilo in VS Code, Notepad++ o nell'editor interno di Visual Studio. Per usarlo in una compilazione, aggiungilo all'impostazione «Module-Definition File» (/DEF) del linker del tuo progetto.
Ho ancora bisogno di un file .def se uso __declspec(dllexport)?
Spesso no - gli attributi di esportazione a livello di sorgente coprono la maggior parte dei casi. Ma il .def è ancora utile per ordinali di esportazione stabili, per esportare nomi C non decorati o per toolchain e progetti legacy che lo richiedono.
Come creo un .lib da un .def?
Usa lo strumento LIB di MSVC: lib /DEF:nome.def /OUT:nome.lib /MACHINE:X64 (o dlltool di MinGW). Questo crea una libreria di importazione in modo che altro codice possa collegarsi alla DLL descritta dal .def.
Perché il mio linker segnala esportazioni mancanti?
Spesso il simbolo non è elencato nella sezione EXPORTS del .def, il nome è decorato in modo diverso da quanto previsto o l'ordinale è cambiato. Verifica che l'elenco EXPORTS corrisponda ai nomi effettivi delle funzioni e che venga passato al linker.
Il mio file .def non è un file del linker - cos'altro usa .def?
Diversi programmi non correlati riutilizzano .def per i propri dati di «definizione» - definizioni di mappe di gioco (es. Tibia), schemi di database/GIS (SmartWare, ArcView) o interfacce di moduli Modula-2/Oberon. Si tratta di formati diversi che condividono l'estensione.

Riferimenti

1Microsoft Learn - Module-Definition (.def) Fileslearn.microsoft.com
2Microsoft Learn - EXPORTS sectionlearn.microsoft.com

Continua a esplorare

nel database

Migliori estensioni della settimana

1.AQQAQQ Instant Messenger File
2.CRDOWNLOADChrome Partial Download File
3.MDMarkdown Document
4.BINCD/DVD Disc Image (BIN/CUE)
5.NOMEDIAAndroid No-Media Marker File
6.PARTPartial Download File
7.RPMSGRestricted Permission Message
8.EXEWindows Executable (Portable Executable)
9.AVIFAV1 Image File Format (AVIF)
10.DBSQLite Database File

Estensioni correlate

.DOStata Do-File
.MDMarkdown Document
.HEXIntel HEX File
.XSDXML Schema Definition
.MAPSource Map (JavaScript / CSS)
.CONFIGConfiguration File

Strumenti file gratuiti

Un identificatore di file e convertitore di immagini nel browser - tutto viene eseguito sul tuo dispositivo.

Apri la cassetta degli attrezzi

Sfoglia le estensioni dei file A-Z