Qu'est-ce que le format de fichier DEF ?
Les fichiers .def sont associés aux environnements de développement Windows et OS/2, utilisés avec C, C++ et d'autres langages compilés.
Les fichiers avec l'extension .def stockent des données au format texte brut. Les fichiers .def sont parfois appelés fichiers de définition de module et sont utilisés pour générer des bibliothèques DLL. Un fichier .def stocke un ensemble spécial de directives d'édition de liens - des instructions telles que LIBRARY, EXPORTS, IMPORTS, SECTIONS, HEAPSIZE et STACKSIZE - utilisées pour définir les aspects clés d'une bibliothèque DLL, notamment les fonctions et les symboles de données exposés aux appelants et les numéros ordinaux qu'ils portent.
Le fichier est transmis à l'éditeur de liens au moment de la compilation à l'aide du commutateur /DEF:name.def (MSVC) ou de drapeaux équivalents dans MinGW/GCC et LLVM lld-link. Il s'agit d'une entrée de build, pas d'un artefact compilé ; le binaire résultant est un .dll ou .exe.
Une DLL est un fichier de bibliothèque qui stocke du code exécutable et d'autres données connexes. Les fichiers DLL sont réutilisables - ils peuvent être consultés par plusieurs applications simultanément - et chargés dynamiquement en cas de besoin. Les fichiers DLL sont également un moyen d'économiser de l'espace disque et de la mémoire opérationnelle en raison de leur nature dynamique. La mise à jour des logiciels est également facilitée par le fait que les fichiers DLL sont partagés entre plusieurs applications.
Les compilateurs C/C++ modernes permettent aux développeurs de marquer les symboles exportés directement dans le code source à l'aide de __declspec(dllexport), ce qui réduit considérablement le besoin d'un fichier .def séparé. Cependant, les fichiers .def restent pris en charge par l'éditeur de liens MSVC actuel (link.exe) et LLVM lld-link, et sont toujours préférés lorsqu'une table d'exportation stable et explicitement ordonnée est requise.
Sécurité et sûreté
RISQUE : LOWUn fichier .def de définition de module est un minuscule fichier de build en texte brut et peut être ouvert et lu en toute sécurité - il ne peut pas s'exécuter. Le seul risque pratique est de le modifier dans un projet réel : changer ou supprimer une entrée EXPORTS modifie l'interface publique de la DLL et peut casser les appelants ou changer les ordinaux d'exportation, comprenez donc l'impact sur l'ABI avant toute modification. Comme pour tout fichier source, ne faites confiance qu'aux fichiers .def provenant de sources de projet que vous contrôlez.
Détails du format
en bref- Fichier de carte Tibia / OTClient (.def) - Certains outils de jeu et l'éditeur de cartes Tibia utilisaient .def pour les définitions de cartes/apparitions - sans rapport avec les éditeurs de liens.
- Définition de données ESRI ArcView / SmartWare - D'anciens outils de base de données et de SIG (SmartWare, ArcView, DataFlex) écrivaient leurs propres fichiers de schéma/définition .def.
- Définition d'animation AniSprite / Module DEFINITION Oberon-2 & Modula-2 - AniSprite stockait les définitions d'animation de sprites dans .def ; Modula-2/Oberon utilisent .def pour l'interface publique d'un module.
Programmes qui ouvrent les fichiers DEF
Détails techniques
spécifications approfondies| Type de format | Fichier de directives d'édition de liens en texte brut |
| Type MIME | text/plain |
| Encodage des caractères | ASCII / ANSI ; l'UTF-8 sans BOM est typique |
| Signature de fichier (octets magiques) | Aucune - identifié par des mots-clés tels que LIBRARY, EXPORTS ou NAME au début des lignes |
| Taille de fichier typique | Moins de 1 Ko à quelques Ko (un symbole exporté par ligne) |
| Instruction principale : LIBRARY / NAME | Déclare le nom du module incorporé dans l'en-tête interne de la DLL |
| Instruction principale : EXPORTS | Répertorie chaque symbole à exposer, avec des drapeaux optionnels d'ordinal (@N), NONAME et DATA |
| Instructions supplémentaires | IMPORTS, SECTIONS (définir les attributs de section), HEAPSIZE, STACKSIZE |
| Commutateur de l'éditeur de liens (MSVC) | /DEF:filename.def transmis à link.exe au moment du build |
| Chaînes d'outils prises en charge | MSVC link.exe, MinGW/GCC ld, LLVM lld-link, éditeur de liens Watcom, éditeur de liens Digital Mars |
| Artefacts de sortie | Contrôle la table d'exportation d'un .dll et la bibliothèque d'importation (.lib) générée parallèlement |
| Systèmes d'exploitation associés | Windows (principal) ; OS/2 (hérité) ; DOS 16 bits (hérité) |
| Alternative moderne | __declspec(dllexport) dans le code source ; .def toujours préféré pour les ordinaux d'exportation stables et la portabilité de la chaîne d'outils |
| Mots-clés 16 bits hérités | Instructions d'attributs de segment CODE et DATA présentes dans les fichiers DEF Windows/OS/2 16 bits ; obsolètes sous Win32 |
| Compression et chiffrement | Aucun - toujours stocké sous forme de texte brut non compressé et non chiffré |
| Publié | Windows / OS/2 development, late 1980s-1990s (16-bit, then Win32) |
| Dernière version | Same statement syntax used by the current MSVC linker (link.exe) and LLVM lld-link |
| Spécification | learn.microsoft.com |
Conversions DEF
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers DEF.